
こんにちは新米です。
Webアプリ開発の学習をしている人で検索機能を作りたい人はいるんではないでしょうか?
今回はSQL SERVERで検索機能を作る仕組みを知りましょう。
LIKE演算子?ワイルドカード?とは
LIKE演算子とは指定した文字列が指定した列と一致するかどうか判定する為に使います。
例:
SELECT * FROM テーブル名 WHERE 列名 LIKE '文字列'
文字列にはワイルドカードを使うことができます。
ワイルドカードには以下の種類があります。
ワイルドカード |
役割 |
% |
0文字以上の任意の文字列 |
_ (アンダーバー) |
任意の1文字 |
[ ] |
[ ]内に指定した任意の1文字 |
[^] |
[^]内にない任意の1文字 |
では、LIKE演算子とワイルドカードを使って検索方法について解説していきたいと思います。
【SQL SERVER】LIKEとワイルドカードであいまい検索をする
以下のテーブルを使って解説するよ!
テーブル名:Sample
LIKE演算子&(%)
ワイルドカードの(%)は0文字以上の任意の文字列を指定する亊ができます。
記述パターン:
文字列%
%文字列%
例:
SELECT * FROM Sample WHERE Name LIKE '田%'
実行結果
Id |
Name |
Job |
A0003 |
田茂木 |
教師 |
A0004 |
田中 |
看護師 |
B0001 |
田口 |
アパレル店員 |
B0003 |
田 |
俳優 |
文字数を問わない為、Nameの頭文字が”田”であるレコードを抽出します。
その為Sampleテーブルの「中田」は抽出されません。
もし’%田’や’%田%’である場合は、「中田」が抽出されます。
LIKE演算子&(_)
ワイルドカードの(_)は任意の1文字を指定する事ができます。
記述パターン:
文字列_
_文字列_
例:
SELECT * FROM Sample WHERE Name LIKE '上_'
実行結果
Id |
Name |
Job |
A0001 |
上野 |
エンジニア |
A0002 |
上田 |
美容師 |
_(アンダーバー)は任意の1文字を指定できる為
今回の文字列指定では、上+任意の1文字となります。
その為Sampleテーブルの「上別府」は抽出されません。
もし’上%’である場合は「上野、上田、上別府」の3レコードが抽出されます。
LIKE演算子&([ ])
ワイルドカードの([ ])は[ ]内に指定した任意の1文字を指定する事ができます。
記述パターン:
文字列[ ] [ ]文字列[ ]
例:
SELECT * FROM Sample WHERE Id LIKE 'A000[1-3]'
実行結果
Id |
Name |
Job |
A0001 |
上野 |
エンジニア |
A0002 |
上田 |
美容師 |
A0003 |
田茂木 |
教師 |
列名idの文字列が「A000 + 1から3」範囲内のデータを取得するように指定しています。
LIKE演算子&([^])
ワイルドカードの([^])は[^]内にない任意の1文字を指定する事ができます。
[^]は[ ]の否定バージョンだと覚えましょう!
記述パターン:
文字列[^] [^]文字列[^]
例:
SELECT * FROM Sample WHERE Name LIKE 'A000[^1-3]'
実行結果
Id |
Name |
Job |
A0004 |
田中 |
看護師 |
A0005 |
佐々木 |
医者 |
列名Idの文字列が「A000 + (1~3ではない任意の1文字)」を指定しています。
まとめ
いかがだったでしょうか。
今回はLIKE演算子とワイルドカードを用いてテーブルのデータ検索について解説しました。
紹介したSQL以外にも自分でテーブルを作成し実際にSQL文を書いて学習を深めていってください!
コメント
[…] LIKE […]