SSブログ

クエリ 文字列の比較判定では、末尾からの半角スペースは無視される [クエリ]

 例えば、このような内容のテーブルがあります。

 「文字列」項目は、見た目には何もありませんが、それぞれ「備考」のような状態になっていて、すべて違う内容になっています。


 抽出条件に「Is Null」を設定すると、結果は、

 「Null」のレコードが抽出されます。


 次ぎに、「""」(長さ0の文字列)を抽出条件に設定します。
 すると、

 こんな結果になってしまいました。

 念のための確認ですが、

 Len関数で、文字列の長さを確認してみます。

 ちゃんと文字の数が表示されています。

 どうやら、半角スペースは、数が無視されているようです。
 厳密には、末尾からのスペースは認識されないようです(「 A」とかは正しく判定される)。ちょうど、RTrimを行った状態で条件比較されてるようです。

 なんでそうなってるのか調べたんですが、わかりませんでした。
 SQLServerでも同じような現象が起きたことがあります。

 ACCESSのデータシートビューからデータを入力する場合は、このような「文字列の末尾に半角スペース」が入った内容は登録できないようになっています。
 しかし、更新クエリや、プログラムからのレコード登録では可能です。
 半角スペースの数が違えば、項目の内容的には別物扱いですが、クエリで条件抽出しようとすると、同じとみなされてしまうので、とても厄介です。キー項目だとなおさらです。
 クエリの条件抽出以前に、見えない半角スペースは扱いがめんどくさいので、文字列の前後に入力できないようにしておくのが無難です。(登録するときに、Trimをかける)


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。