補助文字

更新 : 2006 年 12 月 12 日

SQL Server 2005 では、UCS-2 エンコード体系を使用して、Unicode 文字をバイナリ形式でエンコードします。中国語などの一部の言語では、使用頻度が低く Unicode 標準に含まない文字を別に定義しています。UCS-2 ではこのような文字、つまり補助文字を 2 つの未定義の Unicode 文字として格納します。この 2 つの未定義の Unicode 文字は、その 2 文字をペアで使用した場合に補助文字としての役割を果たします。これにより、SQL Server では、損失や破損の危険性を伴うことなく補助文字を格納できます。また、SQL Server 2005 では、ビジネス インテリジェンスなどのツール ベースのアプリケーションを含む、SQL Server ベースのアプリケーションで補助文字を使用および表示できます。

Windows Vista または Microsoft Office 2007 用の Microsoft IME (Input Method Editor) を使用している場合、補助文字は UCS コード ポイント U+10000 以上で表されます。

補助文字を使用する場合は、次の制限事項を考慮してください。

  • 補助文字は、"90" 照合順序でのみ、順序付けと比較ができます。これらの比較は、コード ポイントだけに基づいており、他の言語的に有意義な方法には基づいていません。ORDER BY、GROUP BY、および DISTINCT などの操作で補助文字を使用する場合は注意してください。補助文字と補助文字以外の文字が同じ操作で使用される場合には、特に注意が必要です。"90" 照合順序名には、サフィックス (接尾辞)、"90" が付いています。たとえば、Japanese 照合順序の代わりに、Japanese_90 を使用します。詳細については、「セットアップでの照合順序の設定」を参照してください。
  • 補助文字は 2 つの 2 バイト文字のペアとして格納されるため、LEN() 関数は、引数文字列に格納されている各補助文字に対して値 2 を返します。同様に、CHARINDEX 関数および PATINDEX 関数は、誤って文字列内に補助文字が含まれていると解釈します。また、NCHAR 関数は、補助文字のペアの一方だけを表す文字列を返します。binary 型の値または varbinary 型の値を補助文字に変換した場合も、補助文字のペアの一方だけが返されます。
  • LEFT、RIGHT、SUBSTRING、STUFF、および REVERSE の各関数では、補助文字のペアが分割され、予期しない結果が生じることがあります。
  • 補助文字は、アンダースコア (_)、スペース ( )、およびカレット (^) の各ワイルドカード文字と一緒に使用することはできません。
  • 補助文字は、データベース オブジェクトの名前など、メタデータ内で使用することはできません。
  • 補助文字が存在すると、サーバーおよびデータベースのアップグレード操作時には、独自の格納メカニズムにより、余分なリソースが消費される場合があります。

SQL Server 2005 には、共通言語ランタイム (CLR) 関数内で処理される、補助文字に対応する文字列を示すサンプルが用意されています。詳細については、「補助文字対応文字列操作」を参照してください。

参照

概念

特殊な文字エンコードを使用した作業

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

新しい内容 :
  • 文字が補助文字かどうかを決定する方法を明記しました。