カテゴリー ‘ Access

AccessのWhere句では全角・半角、大文字・小文字、ひらがな・カタカナの区別がされない

AccessのWhere句では、全角・半角、大文字・小文字、ひらがな・カタカナのそれぞれが区別されません。

例えば、以下のSQLを実行した場合、”Field”に”12345”という値が入っていた場合にも抽出されます。

SELECT * FROM Table1 WHERE Field = '12345'

ほとんどの場合は、上記のような検索がされても問題ないのですが、ログイン画面のような処理では、入力値を厳しくチェックする必要があります。

その際の対処法を以下に載せておきます。

LIKEで中間一致検索を行う場合

SELECT * FROM Table WHERE Field LIKE '*テスト*'

上記を厳密に行いたい場合

SELECT * FROM Table WHERE InStr(1, Field, 'テスト' , 0) >= 1

イコールで検索を行う場合

SELECT * FROM Table WHERE Field = 'テスト'

上記を厳密に行いたい場合

SELECT * FROM Table WHERE StrComp(Field, 'テスト' , 0) = 0

注意点

LIKEを置き換える場合は、中間一致のみ可能で、前方一致や後方一致は行うことが出来ません。

上記のサンプルでは、バイナリ比較を行っているので、通常の検索よりも遅くなる可能性があります。

これが、一番の問題点なのですが、抽出条件のフィールドにインデックスがはられている場合、そのインデックスは使用されません。

ですので、レコード数の多いテーブルで使用することは、おすすめ出来ません。

Share on Facebook

広告

Facebook

カレンダー

2017年3月
« 5月    
 1234
567891011
12131415161718
19202122232425
262728293031  

最近の投稿

アーカイブ