LENGTH スカラー関数
LENGTH 関数は、暗黙的あるいは明示的なストリング単位で expression の長さを戻します。
スキーマは SYSIBM です。
- expression
- 組み込みデータ・タイプの値を戻す式。 expression が NULL になる可能性がある場合は、結果も NULL になる可能性があります。 expression が NULL であれば、結果も NULL 値になります。
- CODEUNITS16、CODEUNITS32、または OCTETS
- 結果のストリング単位を指定します。
CODEUNITS16 は、結果が 16 ビット UTF-16 コード単位で表現されることを指定します。
CODEUNITS32 は、結果が 32 ビット UTF-32 コード単位で表現されることを指定します。
OCTETS は、結果がバイト単位で表現されることを指定します。
ストリング単位が明示的に指定され、expression がストリング・データでない場合、エラーが戻されます (SQLSTATE 428GC)。 ストリング単位が CODEUNITS16 または CODEUNITS32 と指定され、expression がバイナリー・ストリングまたはビット・データである場合は、エラーが戻されます (SQLSTATE 428GC)。 ストリング単位が OCTETS と指定され、expression がバイナリー・ストリングである場合は、エラーが戻されます (SQLSTATE 42815)。 CODEUNITS16、CODEUNITS32、および OCTETS の詳細については、『文字ストリング』の『組み込み関数のストリング単位』を参照してください。
ストリング単位引数が明示的に指定されていない場合、および expression が文字ストリングまたはグラフィック・ストリングである場合、expression のストリング単位によって、結果に使用されるストリング単位が決まります。そうでない場合、戻される値では、バイト単位の長さが指定されます。
この関数の結果は長精度整数 (large integer) です。 引数が NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数が NULL であれば、結果は NULL 値です。
文字および GRAPHIC ストリングの長さには、末尾ブランクが含まれます。 バイナリー・ストリングの長さには、2 進ゼロが含まれます。 可変長ストリングの長さは、最大長ではなく実際の長さです。 それ以外のすべての値の場合の長さは、 その値を表すために使用されるバイトの数になります。
- 短精度整数 (SMALLINT) の場合は 2
- 長精度整数 (INTEGER) の場合は 4
- 64 ビット整数 (BIGINT) の場合は 8
- 精度 p の 10 進数の場合は (p/2)+1
- DECFLOAT(16) の場合は 8
- DECFLOAT(34) の場合は 16
- バイナリー・ストリングの場合は、そのストリングの長さ
- 文字ストリングの場合は、そのストリングの長さ
- 単精度浮動小数点の場合は 4
- 倍精度浮動小数点の場合は 8
- DATE の場合は 4
- TIME の場合は 3
- TIMESTAMP(p) の場合は 7+(p+1)/2
例
- 例 1: ホスト変数 ADDRESS が、'895 Don Mills Road' という値を持つ可変長文字ストリングであると想定します。
戻り値は 18 です。LENGTH(:ADDRESS) - 例 2: START_DATE が DATE タイプの列であると想定します。
戻り値は 4 です。LENGTH(START_DATE) - 例 3: 以下の例は、値 10 を返します。
LENGTH(CHAR(START_DATE, EUR)) - 例 4: 以下の例は、Unicode ストリング '&N~AB' に対応します。
'&' は音楽のト音記号、'~' は結合チルド文字です。
以下の例では、このストリングを異なる Unicode エンコード方式で示しています。
'&' 'N' '~' 'A' 'B' UTF-8 X'F09D849E' X'4E' X'CC83' X'41' X'42' UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042' UTF-32BE X'0001D11E' X'0000004E' X'00000303' X'00000041' X'00000042' 変数 UTF8_VAR に、ストリングの UTF-8 表現が格納されると想定します。
それぞれ、値 6、5、9 を戻します。SELECT LENGTH(UTF8_VAR, CODEUNITS16), LENGTH(UTF8_VAR, CODEUNITS32), LENGTH(UTF8_VAR, OCTETS) FROM SYSIBM.SYSDUMMY1変数 UTF16_VAR に、ストリングの UTF-16BE 表現が格納されると想定します。
それぞれ、値 6、5、12 を戻します。SELECT LENGTH(UTF16_VAR, CODEUNITS16), LENGTH(UTF16_VAR, CODEUNITS32), LENGTH(UTF16_VAR, OCTETS) FROM SYSIBM.SYSDUMMY1
