照合順序の変更を要する検索処理の問題よりも、頭を悩ませることとなりそうなのは、lenやrightなどの文字列処理を行う関数の対処だ。この対処について、マイクロソフトでは「SQL Server 2005におけるJIS2004対応に関するガイドライン」の中で、ユーザが独自にCLRを使った関数を実装するように示している。
ご承知のとおりSQL Server 2005では.NETを使って、ユーザ定義関数を作成し呼び出せるようになっている。CLRとはCommon Language Runtimeの略称で、.NETプログラムの実行環境を意味する。つまりサロゲートペアを正しく扱える文字列関数を.NETで実装して、そちらを使ってほしいというのだ。
少し長くなってしまったから、SQL Server 2005でJIS X 0213:2004に対応するための手法について、もう一度まとめておくことにしよう。
データ型はnvarchar/nchar/ntextなど、先頭に「n」が付いたデータ型を使う
文字列の先頭には大文字のNを付ける(Nプレフィックス)
照合順序にはJapanese_90_BIN2などを指定する
len_s,right_s,left_sなどユーザ独自関数を実装して使う
表1:SQL Server 2005でJIS X 0213:2004に対応するための手法
以上のように、SQL Serverを使ったアプリケーションをJIS X 0213:2004に対応させようとするとアプリケーション側の変更は避けられない。TempDBを使っている場合には、照合順序の変更のために、SQL Serverの再インストールということにもなるだろう。さらには、自己責任での関数作成と運用まで必要となり、開発者の負担はあまりに大きい。