Windows XP 向け JIS2004 対応のフォント パッケージが提供されたので
http://www.microsoft.com/japan/windows/products/windowsvista/jp_font/default.mspx
SQL Server 2005 で試してみました。
JIS2004 には、第3、第4水準の漢字が定義されていますが、
Vistaでは、その多くを Unicode の補助文字として実装しています
(サロゲート ペアを使います)。
JIS2004 の新漢字の一覧は、最初の URL の Web ページからダウンロード
できるホワイトペーパーに記載されています。
ホワイトペーパーだとちょっと分かりづらいという方は、
日経 ITPro の以下の記事で、とても分かりやすく書かれています。
Vistaで化ける字,化けない字
http://itpro.nikkeibp.co.jp/article/COLUMN/20061211/256519/?ST=vista
Vistaで化ける字,化けない字(続報)
http://itpro.nikkeibp.co.jp/article/COLUMN/20061221/257533/?ST=vista
SQL Server 2005 で補助文字(サロゲート ペアを使って表現する文字)
を利用する際の注意点は、こちらにまとまっています。
SQL Server における JIS2004 対応について寄せられる質問と回答
http://support.microsoft.com/default.aspx/kb/931785
ここには、文字列操作系の関数(LEN や RIGHT、SUBSTRING など)が、
サロゲート ペアを分解して、2つの文字として扱ってしまうので、
予期せぬことが起きるかもと書かれています。
また、LIKE の検索は、照合順序に Japanese_90 を使わないといけない
とも書いてあります。
というわけで、補助文字を SQL Server 2005 に格納してみて
試してました。試した漢字は
(233D0):木へんに夕
です。フォント パッケージをインストールしているか、
メイリオ フォントを利用している場合は、文字が見れます。
----
USE tempdb
CREATE TABLE uniuni ( a nvarchar(100) )
INSERT INTO uniuni VALUES(N'test')
INSERT INTO uniuni VALUES(N'てすと')
INSERT INTO uniuni VALUES(N'')
SELECT * FROM uniuni
/*
-- 文字コードで INSERT する場合。
-- (233D0)は D84C, DFD0(サロゲート ペア)
-- Vista の IMEパッドで確認可能
INSERT INTO uniuni VALUES(0x4CD8D0DF)
SELECT * FROM uniuni
*/
-- 余計なものまで Hit
SELECT * FROM uniuni WHERE a LIKE N'%'
-- Hit
SELECT * FROM uniuni WHERE a LIKE N'%' COLLATE Japanese_90_BIN
SELECT * FROM uniuni WHERE a LIKE N'%' COLLATE Japanese_90_CI_AS
-- LEN。補助文字は 2文字扱い
SELECT LEN(a) FROM uniuni
-- RIGHT も同様
SELECT RIGHT(a, 1) FROM uniuni
-- DATALENGTH。補助文字は 4 バイト扱い
SELECT DATALENGTH(a) FROM uniuni
DROP TABLE uniuni
USE master
----ここまで----
そのほか、以下の BOL にも詳しい情報があります。
SQL Server における補助文字の扱い
http://msdn2.microsoft.com/ja-jp/library/ms180942.aspx
補助文字対応文字列操作
http://msdn2.microsoft.com/ja-jp/library/ms160903.aspx