クエリ 文字列の比較判定では、末尾からの半角スペースは無視される [クエリ]
例えば、このような内容のテーブルがあります。
「文字列」項目は、見た目には何もありませんが、それぞれ「備考」のような状態になっていて、すべて違う内容になっています。
抽出条件に「Is Null」を設定すると、結果は、
「Null」のレコードが抽出されます。
次ぎに、「""」(長さ0の文字列)を抽出条件に設定します。
すると、
こんな結果になってしまいました。
念のための確認ですが、
Len関数で、文字列の長さを確認してみます。
ちゃんと文字の数が表示されています。
どうやら、半角スペースは、数が無視されているようです。
厳密には、末尾からのスペースは認識されないようです(「 A」とかは正しく判定される)。ちょうど、RTrimを行った状態で条件比較されてるようです。
なんでそうなってるのか調べたんですが、わかりませんでした。
SQLServerでも同じような現象が起きたことがあります。
ACCESSのデータシートビューからデータを入力する場合は、このような「文字列の末尾に半角スペース」が入った内容は登録できないようになっています。
しかし、更新クエリや、プログラムからのレコード登録では可能です。
半角スペースの数が違えば、項目の内容的には別物扱いですが、クエリで条件抽出しようとすると、同じとみなされてしまうので、とても厄介です。キー項目だとなおさらです。
クエリの条件抽出以前に、見えない半角スペースは扱いがめんどくさいので、文字列の前後に入力できないようにしておくのが無難です。(登録するときに、Trimをかける)
コメント 0