SQL WHERE 句: 値の一致における末尾のスペース
SQL Server では、WHERE 句を使用した文字列比較で特有の動作が発生し、次のような問題が発生する可能性があります。予想外の結果に。具体的には、等価演算子 (=) は、比較を実行するときに末尾のスペースを無視します。
次のシナリオを考えてみましょう:
select '"' + ZoneReference + '"' as QuotedZoneReference from Zone where ZoneReference = 'WF11XU'
驚くべきことに、クエリは次の結果を返します:
"WF11XU "
説明:
この動作これは SQL-92 仕様に由来しており、比較演算では文字列をパディングする必要があると規定されています。比較する前に同じ長さであることを確認するためにスペースを入れます。この場合、WHERE 句の ZoneReference 値 ('WF11XU') の末尾にスペースが埋め込まれ、テーブル内の値と一致します。
影響:
このパディングにより、末尾にスペースが含まれる可能性のある値を正確に一致させようとすると問題が発生する可能性があります。たとえば、意図した ZoneReference 値が実際には末尾のスペースのない「WF11XU」である場合、クエリは結果を返しません。
解決策:
正確な一致を保証するには、次のようにします。次の解決策を検討してください。
以上がSQL Server の「WHERE」句は文字列比較で末尾のスペースを無視しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。