QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

SQLServerで大文字と小文字の区別について

Like演算子を使って検索した場合に大文字と小文字の区別をしたいのですが
これはどのように行えば良いのでしょうか?

SQLServer2000で照合順序をJapanese_CS_AS_KS_WSで指定していますが、
TESTという大文字のデータとtestという小文字のデータを

LIKE '%t'

と記述して検索するとTEST、testともに取得されてしまいます・・
そもそもT-SQLのLIKE演算子は大文字と小文字の区別をしないのでしょうか?

その場合、大文字と小文字を区別して検索する場合はどのように行えば
良いのでしょうか?

基本的な質問且つ、.NETに直接関係する内容ではないのですが、
よろしくお願いいたします。

質問者:緑茶

回答

はじめまして、

私はこんな感じで持ってきています
Select * From Test
Where AAA Like '%A%' COLLATE Japanese_CS_AS_KS_WS
DBに設定されたのならもう一度確認してみるとか!?
ちなみにDBに設定すれば
Select * From Test
Where AAA Like '%A%'
で持ってこれてます。

投稿者:ジエゴ

編集 履歴 (0)

Kazさん、レスありがとうございます。

教えて頂いたやり方で希望する処理ができました。
ただデータベースを作る際に設定した照合順序は
テーブル名やカラム名にしか適用されないのでしょうか?

Like句で、大文字、小文字の区別をする場合は必ず
COLLATE の使用が必須と・・

オラクルではデフォルトで区別すると聞いたのですが、
このあたりは混乱しますね

投稿者:緑茶

編集 履歴 (0)

そんなことはないと思いますよ。
実験してみましたが、DBに設定すればCOLLATEは必要ないです。。。
DBの照合順序は確認されましたか?

投稿者:ジエゴ

編集 履歴 (0)

レスありがとうございます。

こちらで新しくデータベースを作成し照合順序を設定したところ
普通に区別されるようになりました。
ただ、以前のデーターベースの照合順序もCS_AS_KE_WSとプロパティに
表示されているのですが、担当者がレプリケーションか何かを使って
いたので、その時になんらかの問題がでたのかもしれません・・

お世話になりました。

投稿者:へるまろ

編集 履歴 (0)

レスありがとうございます。

あれから別のデータベースを作成し、照合順序を設定したところ
正常に大文字と小文字を区別して結果セットが取得できました。

以前のデータベースは確かにプロパティには照合順序が
CS_AS_KS_WSとなっていましたが、レプリケーションを行って
いたのでこの段階でなんらかの問題が発生していたのかもしれません。

お騒がせいたしました。

投稿者:緑茶

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。