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

SQLのWhere条件で全角半角の区別で抽出したい![SQLServer2000]

SQLのSelect文でWhere条件に名称を検索条件にした所・・・問題が発生しました。

以下のデータがあるとします。

[tblTest]
 id       name
-------------------------
000001     テスト1 ←数字は全角
000002     テスト2 ←数字は全角
000003     テスト3 ←数字は全角
000004     テスト1 ←数字は半角

Select *
From tblTest
Where name = 'テスト1' ←半角

とすると、

 id       name
-------------------------
000001     テスト1 ←数字は全角
000004     テスト1 ←数字は全角

が結果として返ってきました。

「テスト1←(半角)」を条件に抽出したいのですが、どうしたらよろしいのでしょうか?!
こんな初心者に教えてください!!

色々調べてはみたのですが、理解できず・・・・

よろしくお願い致します。

P.S.ちなみに、DBのnameフィールドのデータ型はnvarchar(255)です。

質問者:さわこ

回答

SQLServerの設定で照合順序を変更すればいけると思いますよ。

CI
大文字、小文字を区別しない。全角アルファベットの大文字、小文字も区別しない

CS
大文字、小文字を区別する。全角アルファベットの大文字、小文字も区別する

AI
アクセント、濁音、破裂音を区別しない。

AS
アクセント、濁音、破裂音を区別する。

KS
ひらがなとカタカナを区別する。半角でも区別する

WS
文字幅を区別する。つまり全角、半角を区別する。

投稿者:Anon

編集 履歴 (0)

SQLServerの設定で照合順序を変更すれば・・・?ですか・・・。。。。

う〜ん。それはどうやったらいいのでしょうか?
すみません。。初心者な者で、さっぱりわかりません。

オプションとか開いてはみたんですけど・・・それらしき設定する場所が見当たりません。

ちなみに、それは環境を直すってことですよね?
コード上ではどうにもならないのでしょうか・・・

Select文のなかとかでは・・・・。

投稿者:さわこ

編集 履歴 (0)

Select *
From tblTest
Where name = 'テスト1' COLLATE Japanese_CS_AS_KS_WS

でうまくいくと思います。
「Japanese_CS_AS_KS_WS」の意味はAnonさんの書き込みとヘルプを参考にして下さい

投稿者:ゆうじゅん

編集 履歴 (0)

素晴らしい!!

すぐに出来ました!
有難うございました!
こんな機能があるとは思いませんでしたよっ!

Anonさん、ゆうじゅんさん!
本当にありがとうございました!!

また、何かありましたら、その時はお世話になります!!

投稿者:さわこ

編集 履歴 (0)
ウォッチ

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