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の結果は
変わりませんでした。
それから、デフォルトの設定もインストール時に変更すれば良いらしいですが、
そこまでは試せませんでした。
もっと動作を理解しなければいけませんね。
| 固定リンク
「DataBase」カテゴリの記事
- XAMPP on WindowsでMySQLの文字化け対策(2011.06.08)
- DateTime型のデータがキーになった時の検索(2009.02.18)
- SQLServerのインデックスについて調べてみました。(2008.12.28)
- SQLServerパフォーマンス関係の情報取得メモ(2008.12.11)
- SQLServerのログを参照する方法(2008.11.17)
この記事へのコメントは終了しました。




![(株)グルージェント: Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)](http://ecx.images-amazon.com/images/I/51S5E3PHJFL._SL75_.jpg)





コメント