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
