スポンサーリンク
SQL Server

【SQL Server】完全一致・部分一致とは?SQLにおける「一致」の種類を整理して解説

SQL Server
この記事は約3分で読めます。

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 の違いが分かれば理解が進む
  • %_ の意味は必ず押さえる
  • 一致の「厳しさ」が違うだけ

コメント

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