SQL Azure Database の照合順序について

自習書にも書いたのですが、SQL Azure Database の照合順序は、「SQL_Latin_General_CP1_CI_AS」です。
char や varchar データ型へ日本語(ダブル バイト)文字を正しく格納するには、次のように列の照合順序を設定します。

CREATE TABLE テーブル名
(  列名 データ型  PRIMARY KEY
  ,列名 varchar(100) COLLATE Japanese_CI_AS
  ,列名 …)

ただし、変数には照合順序を指定することができないので、次のように変数のデータ型を Unicode 対応の nchar や nvarchar へ変更する必要があります。

DECLARE 変数名 nvarchar(50) = N'検索文字'
SELECT * FROM テーブル名 WHERE 列名 = 変数

ただ、この場合は、内部的に列データの CONVERT_IMPLICIT(暗黙の型変換)が発生し、パフォーマンスに影響を及ぼします。これを回避するには、テーブルの列定義(データ型)を Unicode 対応の nchar や nvarchar へ変更するようにします。

CREATE TABLE テーブル名
(  列名 データ型  PRIMARY KEY
  ,列名 nvarchar(50) COLLATE Japanese_CI_AS
  ,列名 …)

ただし、nchar や nvarchar は、char や varchar データ型よりもデータの格納効率が悪いことに注意しましょう。