値形式または検索形式の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;