ホームページ > データベース > mysql チュートリアル > 等価演算子を使用しているにもかかわらず、SQL クエリが末尾のスペースと一致するのはなぜですか?

等価演算子を使用しているにもかかわらず、SQL クエリが末尾のスペースと一致するのはなぜですか?

Susan Sarandon
リリース: 2025-01-04 14:14:38
オリジナル
131 人が閲覧しました

Why Does My SQL Query Match with a Trailing Space Despite Using the Equality Operator?

末尾のスペースの罠: SQL 比較の難題

次の SQL クエリを考えてみましょう。ここで、ゾーン テーブル内の値との一致を試みます。 :

select '"' + ZoneReference + '"' as QuotedZoneReference
from Zone
where ZoneReference = 'WF11XU'
ログイン後にコピー

驚いたことに、結果は予期しない末尾を示しています。 space:

"WF11XU "
ログイン後にコピー

末尾の空白にもかかわらず、SQL Server は一致を返すため、私たちは困惑しています。

この一見直感に反する動作は、SQL Server の文字列比較をガイドする標準を詳しく調べることで説明できます。 。 ANSI/ISO SQL-92 仕様に従って、SQL Server は比較に使用される文字列をパディングして、チェックを実行する前に文字列が同じ長さであることを確認します。このルールはほとんどの比較演算に適用され、'abc' や 'abc ' などの文字列を文字列比較と同等にします。

ただし、このルールの例外は LIKE 述語です。 LIKE 演算子が関与する場合にのみ、SQL Server はパディングを控えます。この区別は、直接の文字列等価性テストではなく、パターン マッチングという LIKE 述語の主な目的に由来します。

この場合、単純な等価演算子 (=) を使用しているため、SQL Server では末尾のスペースが考慮されます。 、試合の成功につながります。完全一致を検索することが目的の場合は、LIKE 述語を利用できます。これにより、末尾のスペースが無視され、より正確な結果が得られます。

以上が等価演算子を使用しているにもかかわらず、SQL クエリが末尾のスペースと一致するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート