2007年6月21日 更新
SQL Server 照合順序
SQLServer2000で動作しているシステムに「尾てい骨」の「てい」に当たる文字を入力すると「?」となると連絡を受けた。
こちらでも試してみた。
Enterprise Manager より直接入力すると、
「入力した値は、列のデータ型またはデータ長と一致しません。」
とメッセージが出力されて入力すら出来ない。
クエリ アナライザより INSERT文 で登録してから、SELECT すると「尾?骨」と出力される。
再度、Enterprise Manager で直接中を見ても「尾?骨」だ。
調べてみると、その文字は「JIS補助漢字 (JIS X0212)」で、
SQLServer2000 では、Unicode のみの対応となるらしい。
Unicode 対応などした覚えは全くない。
既存のデータベースを Unicode 対応に変更するにはどうすれば良いのか。
① 照合順序名を変更する
SELECT CONVERT(char, SERVERPROPERTY(‘collation’))
ALTER DATABASE TABLE1 COLLATE Japanese_CS_AS_KS_WS
SELECT CONVERT(char, SERVERPROPERTY(‘collation’))
② データ型を varchar → nvarchar に変更する
テストしてみたところ、正しく登録も表示もされた。
照合順序名は、実際何にすれば良いのだろう?
今回はすべて区別するようにしてみた。(Japanese_CS_AS_KS_WS)
しかも、これに変更して全く問題が無いと言い切れない。
すべてにおいてテストが必要だ。
まだまだ勉強が足らないなぁ
投稿者:K・K
山梨県へ嫁ぎ、在宅でお仕事させて頂いています。言葉や風習の異なる 土地は、驚きも多いですが楽しく過ごしています♪富士山だけでなく、ほうとう・桃・葡萄・温泉などいろいろ楽しいモノがあるので、ぜひ一度遊びに来てください!