ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2.7.10 SINGLE条件

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
.
.
.

2.7.11 STARTING WITH条件

STARTING WITH条件では、最初の値式の最初の文字が2番目の値式で指定されている文字と一致するかどうかがテストされます。STARTING WITH条件の形式は次のとおりです。


STARTING WITH条件では大/小文字が区別されるため、DEC Multinational Character Setの大文字を検索すると、検索結果に小文字は含まれません。その逆もまた同じです。たとえば、STARTING WITH 'Ç'STARTING WITH 'ç'では、異なるレコードが取得されます。

STARTING WITH条件では、DEC Multinational Character Setで使用されている発音区別符号が区別されます。したがって、aAと一致しますが、áàäÁÀÂなどとは一致しません。

スペイン語では、chllは一意の単一の文字と同様に処理されます。たとえば、ドメインが照合順番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

2.7.12 UNIQUE条件

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