
述語とは?
<>や、BETWEEN等のSQLの中の、予約語のような存在のことです。
ただ、NVLや、DECODE等の関数とはまた違った存在になります。よく使われるのはINやEXIST、NOT NULLなどでしょう。
関数との違い
述語は引数を取って、値も返しますが、関数とは区別しています。
では、その違いは何かというと、戻り値が必ず真偽値(true/false/unknown)になることです。
述語一覧
| 述語名 | 説明 |
|---|---|
| = | |
| <> | |
| < | |
| > | |
| BETWEEN | xxxからyyyの間の検索ができます。 |
| LIKE | あいまい検索(部分一致検索)を行いたい場合に使います。 |
| NOT IS NULL | NULL以外を抽出できます。 |
| IS NULL | NULLを抽出できます。 |
| IN | 「ORキーワード」を簡略化する目的で使われます。サブクエリも引数に取れます。 |
| NOT IN | 「ORキーワード」を簡略化する目的で使われます。サブクエリを引数に取れます。 |
| EXISTS | 相関サブクエリが唯一の引数になります。存在するデータのみについて検索をかけることができる。 |
| NOT EXISTS | 相関サブクエリが唯一の引数になります。存在しないデータのみについて検索をかけることができる。 |
BETWEEN
以下は、idが1〜3の間のユーザーを取得するSELECT文です。
|
1 |
SELECT * FROM user WHERE id BETWEEN 1 AND 3; |
EXISTS述語について
特徴
- IN句によって、代用できるのであまり使われないが、使いこなせるようになると重宝する。
- 引数を相関サブクエリの一つしか取らない述語
- サブクエリの戻り値は論理値(TRUE/FALSE)を返す。
引数を相関サブクエリの一つしか取らない
「相関サブクエリ」については、下記の記事で解説しています。
サブクエリの戻り値は論理値(TRUE/FALSE)を返す。
例えば、EXISTS述語を使った下記のようなサブクエリの場合は、サブクエリ内の結果はレコードのあるなしで、TRUE、FALSEで返してその結果を元に、判定します。
|
1 2 |
SELECT * FROM USER_MASTER A WHERE EXISTS (SELECT * FROM AUTHORIZATION B WHERE A.USER_ID = B.USER_ID ) |
また、サブクエリ内の取得列に関しては、基本的にどんな列でも問題ないですが、「SELECT *」とすることが決まりとなっています。




この記事へのコメントはありません。