Unicode は、開発の世界で最も影響力があり強力なエンコーディング標準の 1 つです。 Unicode は、0 から 0x10ffff までの整数コードで文字をエンコードすることにより、ほぼすべての言語の文字を表します。
データベースの多用途性により、文字列を Unicode 表現に変換する必要が生じることがあります。
このチュートリアルでは、Oracle データベースの decompose() 関数を使用して、指定された を Unicode 表現に変換する方法を学習します。
Oracle Decompose 関数の構文
関数の構文は次のとおりです。
DECOMPOSE( 文字列 [, { 'CANONICAL' | 'COMPATIBILITY' } ] )
この関数は 2 つの引数を受け入れます。
- 弦 – これは、Unicode 構成に変換される文字列を表します。このパラメーターの値は、CHAR、VARCHAR、NCHAR、NVARCHAR2、CLOB、および NCLOB です。
- カノニカル – 値を canonical に設定すると、関数は元の文字列への再構成を可能にする正規分解を実行できます。指定しない場合、関数はデフォルトでこのパラメーターを使用します。
- 互換性 – 値が互換性に設定されている場合、関数は互換性モードで分解を実行します。このモードでは、元の文字列への再構成は許可されません。半角カタカナと全角カタカナを分解する場合に使用します。
CLOB および NCLOB 型は、明示的な変換によってサポートされることに注意してください。
関数の使用例
次の例は、Oracle データベースの decompose() 関数の使用方法を示しています。
例 1 – 基本的な機能の使用法
次の単純なコードは、decompose 関数を使用して文字列を Unicode 表現に分解する方法を示しています。
デュアルからの出力として decompose('Hello') を選択します。上記のコードを実行すると、出力文字列が次のように返されます。
例 2 – ASCII コードの取得
Unicode 整数値を取得するには、次の例に示すように、結果の文字列を asciistr 関数に渡すことができます。
デュアルからの出力として asciistr(decompose('你好')) を選択します。出力:
例 3 – 非 Unicode 文字での関数の使用
関数に非 Unicode 文字を指定すると、関数は入力文字列を変更せずに返します。
デモンストレーションの例を次に示します。
デュアルからの出力として decompose('l') を選択します。結果:
asciistr 関数を使用する場合も同様です。
デュアルからの出力として asciistr(('l')) を選択します。出力:
例 4 – NULL 引数を指定して関数を使用する
入力値が NULL の場合、関数は NULL 値を返します。
例:
デュアルからの出力として (NULL) を選択します。出力:
例 5 – パラメータが欠落している関数の呼び出し
関数の文字列パラメーターは必須です。したがって、文字列値を渡せなかった場合、関数は次のようにエラーを返します。
デュアルからの出力として () を選択します。結果:
SQL エラー: ORA-00938: 関数の引数が不十分です00938.00000 - '関数の引数が不足しています'
結論
このチュートリアルでは、Oracle の decompose() 関数を使用して文字列を Unicode 表現に変換する方法を学びました。