sql >> データベース >  >> RDS >> Oracle

OracleのDECOMPOSE()関数

    Oracle Databaseでは、DECOMPOSE() 関数は、Unicode分解の1つを文字列引数に適用した結果を返します。分解は、2番目の(オプションの)引数によって決定されます。

    COMPOSE()の反対です 機能。

    構文

    構文は次のようになります:

    DECOMPOSE( string [, { 'CANONICAL' | 'COMPATIBILITY' } ] )

    ここで、両方の引数はCHARのいずれかになります。 、VARCHAR2NCHAR 、または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

    1. UTC_TIMEの例– MySQL

    2. SQLAlchemyキャッシングを無効にする方法は?

    3. ClusterControl 1.7.2の発表:TimescaleDBとMySQL8.0のPostgreSQLバックアップとサポートの改善

    4. ドライバーは、Secure Sockets Layer(SSL)暗号化を使用してSQLServerへの安全な接続を確立できませんでした