« 週末は疲れを取って終わりという生活…。 | トップページ | tracを使ってみたい。 »

2007年8月23日 (木)

SQLServerの文字比較で苦戦しました。

昨日、以下のSQLを実行すると予想外の結果が返ってきました。

SELECT * FROM [TestDB].[dbo].[JapaneseTest]
WHERE name = N'あさがお'

結果
----
あさがお
アサガオ

本来は「ひらがな」のデータが取得できる事を想定するのですが、
実際に取得できたのは「ひらがな」と「カタカナ」両方が取得できてしまいました。

しかし、以下の事をしたら、しっかり比較できるようになりました。

SELECT * FROM [TestDB].[dbo].[JapaneseTest]
WHERE name = N'あさがお' COLLATE Japanese_90_BIN2

結果
----
あさがお

どうやら、デフォルトの状態ではかな、半角全角などを区別しないような
設定になっているようですね。その照合順序をバイナリ比較に変えて
比較させるようにした。ようです。

なお、この照合順序はテーブルのカラムごとに変更が可能なようです。
テーブルのカラムに設定を施すと、1つ目のSQLでも実行が可能になるようです。

テーブル自体にも設定ができるが、その場合は1つ目のSQLの結果は
変わりませんでした。

それから、デフォルトの設定もインストール時に変更すれば良いらしいですが、
そこまでは試せませんでした。

もっと動作を理解しなければいけませんね。

|

« 週末は疲れを取って終わりという生活…。 | トップページ | tracを使ってみたい。 »

DataBase」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/50625/16209018

この記事へのトラックバック一覧です: SQLServerの文字比較で苦戦しました。:

« 週末は疲れを取って終わりという生活…。 | トップページ | tracを使ってみたい。 »