SINGLE条件では、列選択式で指定された結果表の行数が正確に1行のみかどうかがテストされます。1行のみの場合、SINGLE条件はTRUEと評価されます。結果表がゼロ行または複数行の場合、この条件はFALSEと評価されます。
選択式で指定された結果表の行数がゼロ行または複数行の場合、NOT SINGLE条件がTRUEと評価されます。
SINGLE条件およびNOT SINGLE条件では、結果がUNKNOWNになることはありません。
SINGLE条件の形式は次のとおりです。
SINGLE条件では、行の存在のみが確認されるため、列選択式の結果表が単一列幅である必要はありません(列選択式の詳細は、第2.8.2項を参照)。SINGLE条件では、列選択式内のアスタリスク(*)・ワイルドカードによって複数列の表を参照できます(次の例を参照)。
例: SINGLE条件の使用
次の例では、学位を1つ持っている従業員を判別します。
SQL> SELECT E.LAST_NAME, E.EMPLOYEE_ID cont> FROM EMPLOYEES E cont> WHERE SINGLE cont> -- cont> -- Notice that the column select expression uses a wildcard, cont> -- which is valid for multicolumn tables in SINGLE predicates: cont> -- cont> (SELECT * FROM DEGREES D cont> WHERE D.EMPLOYEE_ID = cont> E.EMPLOYEE_ID); LAST_NAME EMPLOYEE_ID Smith 00165 Wood 00170 Peters 00172 . . . |
STARTING WITH条件では、最初の値式の最初の文字が2番目の値式で指定されている文字と一致するかどうかがテストされます。STARTING WITH条件の形式は次のとおりです。
STARTING WITH条件では大/小文字が区別されるため、DEC Multinational Character Setの大文字を検索すると、検索結果に小文字は含まれません。その逆もまた同じです。たとえば、STARTING WITH 'Ç'とSTARTING WITH 'ç'では、異なるレコードが取得されます。
STARTING WITH条件では、DEC Multinational Character Setで使用されている発音区別符号が区別されます。したがって、aはAと一致しますが、á、à、ä、Á、À、Âなどとは一致しません。
スペイン語では、chとllは一意の単一の文字と同様に処理されます。たとえば、ドメインが照合順番SPANISHで定義されている場合、STARTING WITH 'c'ではcharは検索されませんが、catは検索されます。
例: STARTING WITH条件の使用
次の例は、STARTING WITH条件によって、郵便番号が030で始まる従業員の姓および郵便番号がどのように表示されるかを示しています。
SQL> SELECT E.LAST_NAME, E.POSTAL_CODE FROM EMPLOYEES E cont> WHERE E.POSTAL_CODE STARTING WITH '030'; LAST_NAME POSTAL_CODE Nash 03044 . . . Johnson 03055 Klein 03055 9 rows selected |
UNIQUE条件は、列選択式の結果表内に重複行が存在するかどうかの判断に使用されます。UNIQUE条件では、(SQL言語規格に準拠するために)列の値がNULL値である行が無視され、列の他の値が確実に一意になります。これは、単一の列のNULL値は同じ列の別のNULL値と一致するとみなされるSINGLE条件とは対照的です。
式の中で同じ行が2つ見つかると、UNIQUE条件ではFALSEと評価されます。
次の例は、EMPLOYEESデータベースで従業員が1人のみ住んでいる都市を判別しています。
SQL> SELECT E.LAST_NAME, E.CITY FROM EMPLOYEES E cont> WHERE UNIQUE cont> (SELECT * FROM EMPLOYEES EMP cont> WHERE EMP.CITY=E.CITY); LAST_NAME CITY Harrison Boston Smith Bristol McElroy Cambridge Kilpatrick Marlow Sciacca Munsonville Vormelker Rochester Dement Sanbornton Babbin Sanbornville Keisling Twin Mountain Ziemke Winnisquam Johnston Wolfeboro 11 rows selected |