Unicode データベースでのストリング比較
パターン・マッチングは、既存の MBCS データベースの動作と Unicode データベースの動作がいくらか違っている分野の 1 つです。
MBCS データベースでは、マッチング式に MBCS データが含まれていれば、パターンに SBCS 文字と非 SBCS 文字の両方を組み込める、というのが現在の動作です。パターンの中の特殊文字は、以下のようにして解釈されます。
- SBCS の半角下線文字は、1 つの SBCS 文字を表します。
- 非 SBCS の全角下線文字は、1 つの非 SBCS 文字を表します。
- % (SBCS の半角または非 SBCS の全角) は、0 以上の SBCS または非 SBCS 文字を表します。
Unicode データベースでは、「単一バイト」文字と「非単一バイト」文字の間に実質的な区別がありません。
UTF-8 形式は Unicode 文字の「混合バイト」エンコード方式ですが、
UTF-8 では、SBCS 文字と非 SBCS 文字の間に実質的な区別がありません。
UTF-8 フォーマットでは、文字のバイト数に関係なく、すべての文字が Unicode 文字になります。
Unicode GRAPHIC ストリングでは、半角下線 (U+005F) や半角 % (U+0025) を含め、
補足文字以外のすべての文字が 2 バイト幅になります。
Unicode データベースの場合、パターンの中の特殊文字は、以下のようにして解釈されます。
- 文字ストリングでは、半角下線 (X'5F') または全角下線 (X'EFBCBF') が 1 つの Unicode 文字を表します。半角 % (X'25') または全角 % (X'EFBC85') は 0 以上の Unicode 文字を表します。
- GRAPHIC ストリングでは、半角下線 (U+005F) または全角下線 (U+FF3F) が 1 つの Unicode 文字を表します。半角 % (U+0025) または全角 % (U+FF05) は 0 以上の Unicode 文字を表します。
注: GRAPHIC ストリングでは、Unicode の補足 GRAPHIC 文字が UCS-2 文字 2 つ分で表されるため、この補足 GRAPHIC 文字と下線を対等にするには、下線が 2 つ必要です。
文字ストリングでは、下線 1 つが Unicode の補足文字と等しくなります。
オプションの「エスケープ式」では、下線と % 記号文字の特別な意味を変更するための文字を指定します。この式は、以下のいずれかによって指定できます。
- 定数
- 特殊レジスター
- ホスト変数
- 上記オペランドのいずれかをオペランドとするスカラー関数
- 上記のオペランドまたは関数のいずれかを連結する式
- 式のエレメントに、CLOB または DBCLOB のタイプを使うことはできません。また、BLOB ファイル参照変数は使用できません。
- 文字ストリングの場合、式の結果は 1 文字、またはちょうど 1 バイト入った FOR BIT DATA ストリングでなければなりません (SQLSTATE 22019)。GRAPHIC ストリングの場合、式の結果は 1 文字でなければなりません (SQLSTATE 22019)。