Oracle Databaseでは、DECOMPOSE()
関数は、Unicode分解の1つを文字列引数に適用した結果を返します。分解は、2番目の(オプションの)引数によって決定されます。
COMPOSE()
の反対です 機能。
構文
構文は次のようになります:
DECOMPOSE( string [, { 'CANONICAL' | 'COMPATIBILITY' } ] )
ここで、両方の引数はCHAR
のいずれかになります。 、VARCHAR2
、NCHAR
、またはNVARCHAR2
データ型、またはVARCHAR2
のいずれかに暗黙的に変換できる型 またはNVARCHAR2
。
(オプションの)2番目の引数について:
-
CANONICAL
Unicode標準定義D68で説明されているように、正規分解が発生し、NFD正規化形式で文字列が返されます。 COMPATIBILITY
Unicode標準定義D65で説明されているように、互換性が分解され、NFKD正規化形式で文字列が返されます。
デフォルトの動作は、正規分解を適用することです。
例
次に例を示します:
SELECT DECOMPOSE('ã') FROM DUAL;
結果:
ã
ただし、次の例の方が優れたデモンストレーションです。
SELECT ASCIISTR(DECOMPOSE('ã')) FROM DUAL;
結果:
a\0303
ここでは、ASCIISTR()
を使用しました DECOMPOSE()
の結果のASCIIバージョンを返す データベースの文字セットで。
ASCIISTR()
を使用するとどうなりますか DECOMPOSE()
なし :
SELECT ASCIISTR('ã') FROM DUAL;
結果:
\00E3
非Unicode文字
引数の文字セットがUnicode文字セットのいずれでもない場合、引数は変更されずに返されます。
例:
SELECT ASCIISTR(DECOMPOSE('a')) FROM DUAL;
結果:
a
null
の場合 、結果はnull
です : SET NULL 'null';
SELECT DECOMPOSE(null)
FROM DUAL;
結果:
null
デフォルトでは、SQLclおよびSQL * Plusは、SQL SELECT
の結果としてnull値が発生するたびに空白を返します。 ステートメント。
ただし、SET NULL
を使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
DECOMPOSE()
を呼び出す 引数がないとエラーが発生します:
SELECT DECOMPOSE()
FROM DUAL;
結果:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
また、あまりにも多くの引数を渡すと、エラーが発生します:
SELECT DECOMPOSE('a', 'b')
FROM DUAL;
結果:
Error report - ORA-12702: invalid NLS parameter string used in SQL function