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
にすることができます 、VARCHAR2
、NCHAR
、NVARCHAR2
、CLOB
、またはNCLOB
。 -
LENGTHC()
を使用する場合 、LENGTH2()
およびLENGTH4()
構文では、引数は任意のデータ型CHAR
にすることができます 、VARCHAR2
、NCHAR
、NVARCHAR2
(ただし、ではありません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: