【SQL SERVER】LIKEとワイルドカードであいまい検索をする方法




新米太郎
新米太郎

こんにちは新米です。

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文を書いて学習を深めていってください!




コメント

  1. […] LIKE […]

タイトルとURLをコピーしました