JIS X 0213:2004への対応について

Windows Vistaで正式採用されたJIS X 0213:2004によって、クライアント側で扱える文字が増えたわけだが、それをDBに格納しようとすると当然Database側にも対応が必要になってくる。

TinkITにそれ関係の記事が載っていたので、簡単にまとめてみる。
http://www.thinkit.co.jp/free/article/0707/14/1/
(SQLServer2005の場合) JIS2004 対応に関するガイドライン

  • 文字のデータ型はnchar, nvarchar, nvarchar(max)を使わなければいけない。(char,varcharなどはダメ)
  • 文字列定数に "N" プレフィックスを付加する。
  • 関数、LEN、LEFT、RIGHT、SUBSTRINGの代わりに、len_s、left_s、right_s、sub_sを使う。
  • 代換関数がないもの=STUFF(),REVERSE()
  • サロゲートペア(補助文字)を含んだ検索(where文など)は正しく動かない。(規定の照合順序をJapanese_BINなどに変更すればOK)

(Oracle10gの場合)

ということで、Oracle10gのほうが圧倒的に簡単に済む。というか、SQLServer2005を使っていた場合には、アプリケーションを全部検証しないとダメだ。今後必ず問題になってくるだろう...
SQLServer2005を使っているアプリケーションでVista対応になってるものはちゃんとJIS2004対応になっているのだろうか心配...

(追記)
以前、OracleXECV.netを対応させるときにAL32UTF8の文字コードセットは調査・検証したのだが、Blogを見返してみると2006年2月とか3月とかにやっていたらしい...
UTF8の場合の実際のバイト数についても、2006-02-18(土)のBlogに書いてあった...
このときはVistaのことなど考えてもいなかったが、この時点でSJISからUTF8に対応しといてよかった...(^^;)


MEMO(66709)