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: