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

OracleのLENGTH()関数

    Oracleでは、LENGTH() 関数は引数の長さを返します。

    LENGTH() 関数のグループと考えることもできます。 5つの別々の機能があります。 LENGTH()LENGTHB()LENGTHC()LENGTH2() 、およびLENGTH4() 。各関数は、異なる方法で長さを計算します。

    構文

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

    { LENGTH
    | LENGTHB
    | LENGTHC
    | LENGTH2
    | LENGTH4
    }
    (char)

    関数は次のように長さを計算します:

    関数 を使用して長さを計算します…
    LENGTH() 入力文字セットで定義された文字で、文字列の最初の文字の位置は1です。
    LENGTHB() バイト
    LENGTHC() Unicodeの完全な文字
    LENGTH2() UCS2コードポイント
    LENGTH4() UCS4コードポイント

    引数のタイプは次のとおりです。

    • LENGTH()を使用する場合 およびLENGTHB() 構文では、引数は任意のデータ型CHARにすることができます 、VARCHAR2NCHARNVARCHAR2CLOB 、またはNCLOB
    • LENGTHC()を使用する場合 、LENGTH2() およびLENGTH4() 構文では、引数は任意のデータ型CHARにすることができます 、VARCHAR2NCHARNVARCHAR2 (ただし、ではありません CLOB またはNCLOB

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

    SELECT LENGTH('Big fat cat')
    FROM DUAL;

    結果:

    11

    LENGTHB()との比較

    この例は、使用している特定の関数と関連する文字セットに応じて、結果がどのように異なるかを示しています。

    この場合、LENGTH()を比較します LENGTHB()を使用 :

    SELECT 
        LENGTH('Böyük yağlı pişik') AS LENGTH,
        LENGTHB('Böyük yağlı pişik') AS LENGTHB
    FROM DUAL;

    結果:

       LENGTH    LENGTHB 
    _________ __________ 
           17         22

    2つの関数が2つの異なる結果を返したことがわかります。これは、この文字列の一部の文字が2バイトを使用しているためです。

    LENGTH() 関数は入力文字セットで定義された文字数で長さを返しますが、LENGTHB() 関数は長さをバイトで返します 。

    元の文字列に戻ると、結果は2つの関数間で同じです。

    SELECT 
        LENGTH('Big fat cat') AS LENGTH,
        LENGTHB('Big fat cat') AS LENGTHB
    FROM DUAL;

    結果:

       LENGTH    LENGTHB 
    _________ __________ 
           11         11 

    この文字列は1文字あたり1バイトしか使用しないため、バイト単位の長さは文字数と同じです。

    ヌル引数

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

    SET NULL 'null';
    SELECT 
        LENGTH(null) AS LENGTH,
        LENGTHB(null) AS LENGTHB,
        LENGTHC(null) AS LENGTHC,
        LENGTH2(null) AS LENGTH2,
        LENGTH4(null) AS LENGTH4
    FROM DUAL;

    結果:

       LENGTH    LENGTHB    LENGTHC    LENGTH2    LENGTH4 
    _________ __________ __________ __________ __________ 
         null       null       null       null       null 

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

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

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

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

    SELECT LENGTH()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT LENGTH()
    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 LENGTH('Big fat cat', 'oops')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT LENGTH('Big fat cat', 'oops')
    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. Access2016で排他モードでデータベースを開く方法

    2. SQLで正方形を計算する方法

    3. PostgreSQLのセキュリティ監査の自動化

    4. PostgreSQLの監査ログ