ユーザー定義特殊タイプの値は、完全に同じユーザー定義特殊タイプの値とのみ比較することができます。 ユーザー定義特殊タイプは、WITH COMPARISONS 文節を使用して定義されていなければなりません。
例:
以下の YOUTH 特殊タイプおよび CAMP_DB2_ROSTER 表を想定します。
CREATE DISTINCT 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)
以下の比較は有効です。
SELECT * FROM CAMP_DB2_ROSTER WHERE AGE > HIGH_SCHOOL_LEVEL
以下の比較は無効です。
SELECT * FROM CAMP_DB2_ROSTER WHERE AGE > ATTENDEE_NUMBER
ただし、特殊タイプとそのソース・タイプとの間では、 キャストのための関数または CAST 指定を使用することによって、 AGE と ATTENDEE_NUMBER とを比較することができます。 以下の比較はすべて有効です。
SELECT * FROM CAMP_DB2_ROSTER WHERE INTEGER(AGE) > ATTENDEE_NUMBER SELECT * FROM CAMP_DB2_ROSTER WHERE CAST( AGE AS INTEGER) > ATTENDEE_NUMBER SELECT * FROM CAMP_DB2_ROSTER WHERE AGE > YOUTH(ATTENDEE_NUMBER) SELECT * FROM CAMP_DB2_ROSTER WHERE AGE > CAST(ATTENDEE_NUMBER AS YOUTH)
ユーザー定義構造タイプの値を、 他の値と比較することはできません (NULL 述部および TYPE 述部が使えます)。