17.10 - 例1: スカラー式でのUDTデータ型の使用 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

値形式または検索形式のCASE式での等価比較が、TRUEに評価された場合に返す式として、または、ELSE条件で返す値として、scalar_expression_nおよびscalar_expression_mを使用します。

これらの例のために、次のようにテーブルを定義します。

create table udtval038_t1(id integer, udt1 testcircleudt, udt2 testrectangleudt) PRIMARY INDEX (id);

次に、検索形式のCASE式の例を示します。すべてのスカラー式が同じUDTデータ型となっています。

search_condition_nは、scalar_expression_nと異なるUDTデータ型にすることができます。   SELECT * FROM udtval038_t1
          WHERE udt1 = CASE
          WHEN udt2 <> new testrectangleudt('2,2,4,4,pink,rect')
          THEN new testcircleudt('1,1,2,blue,circ')
          ELSE new testcircleudt('2,2,4,purple,circ')
*** Query completed. 2 rows found. 3 columns returned.
          END;
id udt1
----------- -----------------------------------------------
          1 1, 1, 2, yellow, circ
          2 2, 2, 4, purple, circ

ただし、次の例は、スカラー式に異なるデータ型があるため、正常に完了しません。

   SELECT * FROM udtval038_t1
          WHERE udt1 = CASE
          WHEN udt2 <> new testrectangleudt('2,2,4,4,pink,rect')
          THEN new testcircleudt('1,1,2,blue,circ')
          ELSE new testrectangleudt('2,2,4,4,purple,rect')
          END;