SQL Serverで WHERE 句を書くと、
次のような「一致」に関する言葉をよく目にします。
- 完全一致
- 前方一致
- 後方一致
- 中間一致(部分一致)
「何となく使っているけど、違いを説明できない…」
という人も多いポイントです。
この記事では、SQL Serverにおける「一致」の意味そのものを中心に、
初心者向けに分かりやすく整理します。
SQLにおける「一致」とは?
SQLの「一致」とは、
列の値が、指定した条件に当てはまるかどうか
を判定する考え方です。
SELECT *
FROM Products
WHERE Name = 'りんご';この WHERE 句の条件の書き方によって、
「どこまで同じなら一致とみなすか」が変わります。
完全一致
意味
値が完全に同じ場合のみ一致
書き方(SQL Server)
WHERE Name = 'りんご';一致する例
- りんご
一致しない例
- 青森りんご
- りんごジュース
👉 1文字でも違えば一致しない
👉 ID・コード・キー項目で使う
前方一致(〜で始まる)
意味
指定した文字列で始まっていれば一致
書き方
WHERE Name LIKE 'りんご%';一致する例
- りんご
- りんごジュース
一致しない例
- 青森りんご
👉 % は「任意の文字列(0文字以上)」
後方一致(〜で終わる)
意味
指定した文字列で終わっていれば一致
書き方
WHERE Name LIKE '%りんご';一致する例
- りんご
- 青森りんご
一致しない例
- りんごジュース
中間一致(部分一致)
意味
文字列のどこかに含まれていれば一致
書き方
WHERE Name LIKE '%りんご%';一致する例
- りんご
- 青森りんご
- 国産りんご
- りんごジュース
👉 一番条件がゆるい一致
LIKEで使う記号の意味(重要)
LIKE では、次の2つの記号を使います。
| 記号 | 意味 |
|---|---|
% | 任意の文字列(0文字以上) |
_ | 任意の1文字 |
_(アンダースコア)の正しい理解
例
WHERE Code LIKE 'A_01';この条件の意味は、
A + 任意の1文字 + 0 + 1
一致判定
| Code | 判定 | 理由 |
|---|---|---|
| A001 | ✅ 一致 | A + 0 + 0 + 1 |
| A101 | ✅ 一致 | A + 1 + 0 + 1 |
| AB01 | ✅ 一致 | A + B + 0 + 1 |
| A01 | ❌ 不一致 | 文字数が足りない |
| A1001 | ❌ 不一致 | 文字数が多い |
👉 _ は 必ず1文字
👉 LIKE では 文字数も判定対象
複数候補の一致(IN)
意味
複数の完全一致条件のどれかに当てはまれば一致
書き方
WHERE Status IN ('1', '3', '5');👉Status = '1' OR Status = '3' OR Status = '5'
を簡単に書いた形
範囲の一致(BETWEEN)
意味
指定した範囲内なら一致
書き方
WHERE Price BETWEEN 100 AND 500;👉
100以上かつ500以下(両端を含む)
NULLの一致(特別ルール)
間違った書き方
WHERE Name = NULL;正しい書き方
WHERE Name IS NULL;
WHERE Name IS NOT NULL;👉NULL は「値が存在しない」ため
通常の一致演算子では比較できない
一致の考え方を整理すると
| 一致の種類 | 条件の意味 |
|---|---|
| 完全一致 | 完全に同じ |
| 前方一致 | 先頭が同じ |
| 後方一致 | 末尾が同じ |
| 中間一致 | 含まれていればOK |
| 複数一致 | 候補のどれか |
| 範囲一致 | 範囲内 |
| NULL判定 | 値がないか |
(補足)パフォーマンスとの関係(軽く)
- 完全一致・前方一致
→ SQL Serverが得意 - 中間一致(
%文字%)
→ 件数が多いと遅くなりやすい
👉
まずは意味を正しく理解することが最優先
まとめ
- SQLの「一致」は
どこまで同じならOKかを決めるルール =とLIKEの違いが分かれば理解が進む%と_の意味は必ず押さえる- 一致の「厳しさ」が違うだけ

コメント