特殊タイプの比較

特殊タイプの値は、同じ特殊タイプの値とのみ比較が可能です。

例えば、特殊タイプ YOUTH および表 CAMP_DB2_ROSTER が、次の SQL ステートメントを使用して作成されると仮定します。

   CREATE TYPE YOUTH AS INTEGER WITH COMPARISONS

   CREATE TABLE CAMP_DB2_ROSTER
     ( NAME                VARCHAR(20),
       ATTENDEE_NUMBER     INTEGER NOT NULL,
       AGE                 YOUTH,
       HIGH_SCHOOL_LEVEL   YOUTH)

以下の比較は、AGE および HIGH_SCHOOL_LEVEL が同じ特殊タイプを持っているので有効です。

   SELECT * FROM CAMP_DB2_ROSTER
     WHERE AGE > HIGH_SCHOOL_LEVEL    

以下の比較は無効です。

   SELECT * FROM CAMP_DB2_ROSTER                  ***INCORRECT***
     WHERE AGE > ATTENDEE_NUMBER

しかし、AGE と ATTENDEE_NUMBER の比較は、キャスト関数または CAST 指定を使用して、特殊タイプとソース・タイプの間でキャストすることによって、可能になります。以下の比較はすべて有効です。

   SELECT * FROM CAMP_DB2_ROSTER
     WHERE AGE > YOUTH(ATTENDEE_NUMBER)

   SELECT * FROM CAMP_DB2_ROSTER
     WHERE AGE > CAST( ATTENDEE_NUMBER AS YOUTH)

   SELECT * FROM CAMP_DB2_ROSTER
     WHERE INTEGER(AGE) > ATTENDEE_NUMBER

   SELECT * FROM CAMP_DB2_ROSTER
     WHERE CAST(AGE AS INTEGER) > ATTENDEE_NUMBER