|
取得条件の指定(WHERE)
SELECT文でデータを取得する際に、
条件に一致したデータのみ取得したい場合はWHERE句を利用します。
文法:WHERE <列名1> <比較演算子> <値など> [<AND | OR> <列名2> <比較演算子> <値など>…]
|
複数の条件を利用する場合は、各条件を“AND”もしくは“OR”で繋ぎます。
ANDは“且つ”の意味を持ち、ORは“又は”の意味を持ちます。
また、“AND”と“OR”には優先順位があり、単純に並べると“AND”が優先されます。
数式で“1 + 2 * 3”は“2 * 3”を優先するのと同様です。
先に“1 + 2”を計算する場合に括弧を付けるのと同様に、WHERE句においても優先したいものがあれば、括弧を利用します。
また、列と値を比較する場合、列の型が文字型(charやvarchar)の場合は、値を’(シングルクォート)で囲みます。
よく利用される比較演算子
例 |
意味 |
列名1 = 256 |
列名1の値が256 |
列名1 = '東京都' |
列名1の値が東京都 |
列名1 > 256 |
列名1の値が256より大きい |
列名1 >= 256 |
列名1の値が256以上 |
列名1 < 256 |
列名1の値が256より小さい |
列名1 <= 256 |
列名1の値が256以下 |
列名1 <> 256 |
列名1の値が256でない |
列名1 BETWEEN 10 AND 20 |
列名1の値が10〜20 の範囲内(10,20も含む) |
列名1 NOT BETWEEN 10 AND 20 |
列名1の値が10〜20 の範囲外(10,20 は含まない) |
列名1 IN (1, 3, 5) |
列名1の値が 1, 3, 5 のいずれか |
列名1 NO IN (1, 3, 5) |
列名1の値が 1, 3, 5 のいずれにも一致しない |
列名1 LIKE '東京%' |
列名1の値が東京から始まる任意の文字列 |
列名1 LIKE '%東京' |
列名1の値が東京で終わる任意の文字列 |
列名1 NOT LIKE '東京%' |
列名1の値が東京から始まる任意の文字列でない |
列名1 IS NULL |
列名1がNULL値 |
列名1 IS NOT NULL |
列名1がNULL値でない |
***例***
[社員マスタ]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
01 |
002 |
テスト二郎 |
02 |
001 |
テスト三郎 |
03 |
001 |
テスト四郎 |
[実行SQL]
SELECT
*
FROM
社員マスタ
WHERE
(所属コード = '01' OR 所属コード = '03') AND
社員コード = '001'
|
*上記は比較演算子INを利用すると以下のように書くこともできます
SELECT
*
FROM
社員マスタ
WHERE
所属コード IN ('01', '03') AND
社員コード = '001'
|
[結果]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
03 |
001 |
テスト四郎 |
***例2(IN句に複数列を指定した例)***
※※SQLServerでは文法エラーになるっぽい
[社員マスタ]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
01 |
002 |
テスト二郎 |
02 |
001 |
テスト三郎 |
03 |
001 |
テスト四郎 |
[実行SQL]
SELECT
*
FROM
社員マスタ
WHERE
(所属コード, 社員コード) IN (('01', '001'), ('03', '001'))
|
※INの中は SELECT 列1, 列2 FROM 表1 のようなSELECT句でもいけます
[結果]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
03 |
001 |
テスト四郎 |
|
<<PR>>
価格:300円
価格:300円
|