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

OracleのTRANSLATE(…USING)関数

    Oracleでは、TRANSLATE(...USING) 関数は、その引数を、データベースの文字セットと国別の文字セットの間の変換用に指定された文字セットに変換します。

    この関数を TRANSLATE()と混同しないでください。 関数。1回の操作で複数の単一文字の1対1の置換を行うことができます。

    TRANSLATE(...USING) 関数は、主にANSI互換性のためにOracleでサポートされています。 TO_CHAR()を使用することをお勧めします およびTO_NCHAR() 代わりに機能します。

    構文

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

    TRANSLATE ( char USING
              { CHAR_CS | NCHAR_CS }
              )

    charの場所 変換される式であり、:

    • USINGの指定 CHAR_CS 引数はcharを変換します データベースの文字セットに。出力データ型はVARCHAR2です。 。
    • USINGの指定 NCHAR_CS 引数はcharを変換します 国の文字セットに。出力データ型はNVARCHAR2です。 。

    基本的な例は次のとおりです。

    SELECT 
        TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
        TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
    FROM DUAL;

    結果:

       CHAR_CS    NCHAR_CS 
    __________ ___________ 
    Cat        Cat        

    違いを示すために、DUMP()に渡すと次のようになります。 機能:

    SELECT 
        DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
        DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
    FROM DUAL;

    結果:

                  CHAR_CS                       NCHAR_CS 
    _____________________ ______________________________ 
    Typ=1 Len=3: C,a,t    Typ=1 Len=6: ^@,C,^@,a,^@,t   

    ヌル引数

    nullを渡す 引数がnullを返すため :

    SET NULL 'null';
    SELECT 
        TRANSLATE(null USING CHAR_CS) AS Result
    FROM DUAL;

    結果:

    null

    デフォルトでは、SQLclおよびSQL * Plusは、nullの場合は常に空白を返します。 SQL SELECTの結果として発生します 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    引数がありません

    charを渡さずに関数を呼び出す 引数はエラーになります:

    SELECT TRANSLATE(USING CHAR_CS)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT TRANSLATE(USING CHAR_CS)
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    1. エラー:TCPプロバイダー:エラーコード0x2746。ターミナルを介したLinuxでのSQLセットアップ中

    2. SQL Serverユニオンですが、順序を維持します

    3. MySQLがFULLOUTERJOINで構文エラーを報告するのはなぜですか?

    4. SQLでソートする方法