末尾のスペースの罠: 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 サイトの他の関連記事を参照してください。