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

OracleのNLS_CHARSET_DECL_LEN()関数

    Oracleでは、NLS_CHARSET_DECL_LEN() 関数は、NCHARの宣言の長さ(文字数)を返します 列。

    構文

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

    NLS_CHARSET_DECL_LEN(byte_count, char_set_id)

    byte_countの場所 列の幅であり、 char_set_id 列の文字セットIDです。

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

    SELECT NLS_CHARSET_DECL_LEN(100, 1)
    FROM DUAL;

    結果:

    100

    これは別の文字セットIDです:

    SELECT NLS_CHARSET_DECL_LEN(100, 2000)
    FROM DUAL;

    結果:

    50

    文字セットIDを取得する

    NLS_CHARSET_ID()を使用できます 指定された文字セットの文字セットIDを返す関数:

    例:

    SELECT NLS_CHARSET_DECL_LEN(
        100, 
        NLS_CHARSET_ID('AL16UTF16')
        )
    FROM DUAL;

    結果:

    50

    ヌル引数

    引数がnullの場合 、結果はnullです :

    SET NULL 'null';
    SELECT 
        NLS_CHARSET_DECL_LEN(null, 1) AS r1,
        NLS_CHARSET_DECL_LEN(100, null) AS r2
    FROM DUAL;

    結果:

         R1      R2 
    _______ _______ 
       null    null

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

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

    引数の数が正しくありません

    引数を渡さずに関数を呼び出すと、エラーが発生します:

    SELECT NLS_CHARSET_DECL_LEN()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NLS_CHARSET_DECL_LEN()
    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:

    また、あまりにも多くの引数を渡すと、エラーが発生します:

    SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
    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. T-SQLのPRINTステートメント

    2. オラクルでblobサイズを見つけるためのdbms_lob.getlength()とlength()

    3. NoSQLデータベースの利点–知っておくべきことすべて

    4. フェイルオーバー前またはフェイルオーバー後のスクリプトを使用したMySQLおよびMariaDBのレプリケーションフェイルオーバーの制御