SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

SQL ServerのLIKE条件とは?ワイルドカードとエスケープ文字の使い方を徹底解説

SQL Server(Transact-SQL)のLIKE条件は、SELECT、INSERT、UPDATE、DELETE文のWHERE句でワイルドカードを使用し、特定のパターンに一致するデータを検索するための機能です。部分一致検索を行いたい場面で非常に便利なので、ぜひマスターしておきましょう。

LIKE条件の基本構文

'式' LIKE 'パターン' [ ESCAPE 'エスケープ文字' ]

パラメータの説明

expression(式)

列やフィールドなどの文字列式を指定します。

pattern(パターン)

照合対象となるパターンを含む文字列です。パターンには以下のワイルドカードを使用できます。

記号説明
%任意の長さの文字列に一致(長さ0も含む)
_任意の1文字に一致
[ ]括弧内に指定した任意の1文字に一致
[^]括弧内に指定した文字以外の任意の1文字に一致(例:[^abc]はa、b、c以外の文字に一致)

Escape Character(エスケープ文字)

省略可能な項目です。エスケープ文字を指定すると、「%」や「_」といった特殊文字をリテラル(定数値)として扱えるようになります。

LIKE条件の使用例

例1:ワイルドカード「%」を使う

「%」は0文字以上の任意の文字列に一致します。例えば、「B」で始まる姓を持つ従業員を検索するには、以下のように記述します。

SELECT *
FROM nhanvien
WHERE ho LIKE 'B%';

また、「%」は文字列の中間に配置することもできます。次の例では、名前に「o」という文字を含む従業員を検索しています。

SELECT *
FROM nhanvien
WHERE ho LIKE '%o%';

例2:ワイルドカード「_」を使う

「_」(アンダースコア)は必ず1文字だけに一致することに注意してください。

SELECT *
FROM nhanvien
WHERE ho LIKE 'Ad_m';

この例では、4文字の名前で、最初の2文字が「Ad」、最後の文字が「m」である従業員が返されます。具体的には、Adam、Adem、Adim、Adomなどが該当します。

別の例も見てみましょう。

SELECT *
FROM nhanvien
WHERE so_nhanvien LIKE '123_';

このクエリは、4桁の従業員番号のうち、先頭3桁が「123」であるレコードを検索します。結果として、1230、1231、1232…1239までの合計10件が返されます。

例3:ワイルドカード「[ ]」を使う

角括弧で囲んだ文字は、一致させたい候補文字を表します。

SELECT *
FROM nhanvien
WHERE ten LIKE 'Sm[iy]th';

この例では、5文字の名前で、最初の2文字が「Sm」、最後の2文字が「th」であり、中央の文字が「i」または「y」である従業員が返されます。つまり、SmithまたはSmythに一致します。

例4:ワイルドカード「[^]」を使う

角括弧内の「^」は、一致させたくない文字を意味します。

SELECT *
FROM nhanvien
WHERE ten LIKE 'Smy[^iy]th';

この例では、最初の2文字が「Sm」、最後の2文字が「th」で、中央の文字が「i」でも「y」でもない5文字の名前を持つ従業員が返されます。例えば、Smath、Smethなどが該当します。

例5:NOT演算子を使う

NOT演算子をLIKE条件の前に置くことで、パターンに一致しないデータを検索できます。例えば、「B」で始まらない姓を持つ従業員を検索するには以下のようにします。

SELECT *
FROM nhanvien
WHERE ho NOT LIKE 'B%';

このように、NOT演算子をLIKE条件の直前に配置するだけで、指定パターン以外のレコードを簡単に抽出できます。

例6:エスケープ文字を使う

パターン比較の際に、特殊文字を通常の文字として扱いたい場合は、エスケープ文字の指定が重要になります。例えば、「a%」や「a_」のような文字列そのものを検索したいケースが該当します。

なお、エスケープ文字として指定できるのは1文字のみです。

SELECT *
FROM nhanvien
WHERE secret_hint LIKE '123!%455' ESCAPE '!';

このコマンドは、secret_hintが「123%455」という文字列である従業員を返します。「!」がエスケープ文字として指定されているため、「%」は特殊な意味を持たず、単なる通常の文字として処理されます。

もう少し複雑な例を見てみましょう。

SELECT *
FROM nhanvien
WHERE secret_hint LIKE 'H%!%' ESCAPE '!';

このLIKE条件の実行結果は、「H」で始まり「%」で終わるsecret_hintを持つ従業員です。例えば「Help%」のような値が該当します。

同様に、エスケープ文字は「_」に対しても使用できます。

SELECT *
FROM nhanvien
WHERE secret_hint LIKE 'H%!_' ESCAPE '!';

この例では、「H」で始まり「_」で終わるsecret_hintを持つ従業員が返されます。例えば「Help_」などが該当します。

まとめ

SQL ServerのLIKE条件を使いこなせば、柔軟なパターンマッチングによるデータ検索が可能になります。「%」「_」「[]」「[^]」の各ワイルドカードの特徴を理解し、必要に応じてNOT演算子やESCAPE句を組み合わせることで、より精度の高い検索を実現しましょう。

  1. 【SQL Server】AND条件(AND演算子)の使い方を実例付きで解説

    SQL ServerにおけるAND条件(AND演算子)は、SELECT文、INSERT文、UPDATE文、DELETE文の中で、2つ以上の条件を同時に評価するために使用されます。すべての条件を満たすレコードだけを抽出したい場合に不可欠な機能です。 AND条件の基本構文 WHERE 条件1 AND 条件2 ... AND 条件n; パラメータの説明 条件1、条件2、…条件n: レコードが選択されるために満たす必要がある条件です。 押さえておきたいポイント SQL ServerのAND条件では、2つ以上の条件を組み合わせてチェックできます。 AND条件ではすべての条件が真(TRUE)の場合

  2. MS SQL Serverとは?特徴・主な用途・バージョン履歴・インスタンスの基インスタンスの基礎を徹底解説

    SQL Server(MS SQL Server)とは? SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。従来のRDBMSの枠組みにとどまらず、オブジェクト指向の概念も取り入れたORDBMS(オブジェクトリレーショナルデータベース管理システム)としての側面も併せ持っています。主な特徴は以下の通りです。 Microsoftが開発したRDBMSベースのデータベースソフトウェアである ORDBMS(オブジェクトリレーショナルデータベース管理システム)としても機能する 特定のプラットフォームに依存しない独立した環境で動作する コマンドライ