目次

LIKE 演算子を利用して文字列フィールドをパターンマッチ検索する - SQL Server

LIKE 演算子を利用して文字列フィールドをパターンマッチ検索するSQL文を紹介します。

概要

こちらの記事ではLIKE演算子を利用してワイルドカードを利用した文字列フィールドの検索SQLを紹介しました。
LIKE 演算子はワイルドカード以外にパターンマッチの検索もできます。この記事では、LIKE演算子を利用してパターンマッチの検索をするSQL文を紹介します。

書式

SELECT ... WHERE (列名) LIKE (検索式)
パターンマッチには以下の書式が利用できます。

ワイルドカード文字 意味
% 0文字以上の任意の文字列
_ 任意の1文字
[ ... ] 指定した範囲、または文字列の任意の1文字
[ ^... ] 指定した範囲、または文字列に含まない任意の1文字

記述例

SELECT * FROM Products WHERE name LIKE '[a-z]'

例1

次のテーブルを準備します。

ProductsA テーブル
idnamepricecategory
1Penguin500Bird
2Bear1050Mammal
3Duck150Bird
4Camel920Mammal
5Owl185Bird
6Whale880Mammal

以下のSQLを実行します。
nameフィールドの文字列の先頭が、A,B,C,Dいずれか一致するレコードを取り出します。
SELECT * FROM ProductsA WHERE name LIKE '[A-D]%'

次の結果になります。nameの先頭が B,C,Dの項目が検索結果として取得できます。
idnamepricecategory
2 Bear 1050 Mammal
3 Duck 150 Bird
4 Camel 920 Mammal

例2

先の例と同じテーブルで、以下のSQL文を実行します。nameの値の1文字目が、A,B,C,Dで2文字目がa,b,c,dのレコードを取得します。
SELECT * FROM ProductsA WHERE name LIKE '[A-D][a-d]%'

次の結果になります。nameの先頭が C、2文字目が aの項目が検索結果として取得できます。
idnamepricecategory
4 Camel 920 Mammal

例3

先の例と同じテーブルで、以下のSQL文を実行します。nameの値の1文字目が、B,O,X 以外ののレコードを取得します。
SELECT * FROM ProductsA WHERE name LIKE '[^BOX]%'

SQLの実行結果は以下となります。nameの先頭の文字が B,O,X 以外のレコードが取得できます。
id name price category
1 Penguin 500 Bird
3 Duck 150 Bird
4 Camel 920 Mammal
6 Whale 880 Mammal
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-01-07
作成日: 2024-01-06
iPentec all rights reserverd.