alunote’s blog

C#,SQL,JavaScriptなどの技術メモをゆっくり投稿しています。

【SQL】条件を指定してレコードを検索する方法

SQLで、WHEREを使用することで条件付きのレコード検索を実行することが出来ます。
WHEREの検索条件の記述については、以前にも記載しましたが以下の通りです。

= 左辺が右辺と等しい
< 左辺が右辺より小さい
<= 左辺が右辺以下
> 左辺が右辺より大きい
>= 左辺が右辺以上
<> 左辺と右辺が等しくない
AND 左右の条件を満たしたレコードが検索されます。
OR 左右どちらかの条件を満たしたレコードが検索されます。
NOT 対象以外のレコードが検索されます。

演算子には優先順位があり、NOT, AND, ORの順に実施されます。

以下にテストで使用した環境を記載してきます。
★テスト環境
検証環境:Microsoft SQL Server
テーブル名:PREFECTURE(都道府県マスタ)
列名:
 PREF_ID:都道府県ID
 PREF_NAME:都道府県名
 POPULATION:人口
 AREA:面積
 DENSITY:人口密度


◆条件指定で検索する方法
例文として人口が100万人以上の都道府県だけを検索します。

SELECT * FROM PREFECTURE WHERE POPULATION >= 1000000

日本語は難しく、指定する数を含むか含まないかをしっかりと意識して実装する必要があります。
'以上'と'以下'は指定する数を含み、'未満'は指定する数を含みません。
当たり前のことですが、SQLを書いているとたまに「ん?未満?え?出力されない。。。」
なんてことは時折あります。。。本当はあってはならないことですが。^^;

◆範囲指定して検索する方法
例文として人口が50万以上100万人以下の都道府県だけを検索します。

SELECT * FROM PREFECTURE WHERE POPULATION BETWEEN 500000 AND 1000000

範囲指定する場合は、BETWEENを使用します。
「BETWEEN 下限 AND 上限」で範囲を指定することが可能です。
これは下記SQLと等価の内容となるのでどちらでも問題ありません。
推奨はBETWEENです。見やすいので。。。(@ω@)

SELECT * FROM PREFECTURE WHERE 1000000 >= POPULATION AND POPULATION >= 500000

◆あいまい検索をする方法 <含むパターン>
例文として都道府県名に「島」が入っているものだけを検索します。

SELECT * FROM PREFECTURE WHERE PREF_NAME LIKE '%島%'

あいまい検索については以前の記事でも説明しましたがLIKEを使用します。
検索したい文字列の前にLIKEを記述し、今回は部分一致で検索するため前後に%を記述しました。

◆あいまい検索をする方法 <含まないパターン>
例文として都道府県名に「山」が入らないものだけを検索します。

SELECT * FROM PREFECTURE WHERE PREF_NAME NOT LIKE '%山%'

条件文字列を含まないあいまい検索を行いたい場合、NOT LIKEを使用します。
今回、記事を書いているときに気づいたのですが、、、

SELECT * FROM PREFECTURE WHERE NOT PREF_NAME LIKE '%山%'

でも動きます。。。すごいねSQL!!空気読んでくれてありがとう。。。
NOTとLIKEで列名を挟む。。。SQLの凄さに甘えることなく列名 NOT LIKEにしましょう。

以上です。
この記事が誰かの役に立つことを祈ります。