LENGTH スカラー関数

LENGTH 関数は、暗黙的あるいは明示的なストリング単位で expression の長さを戻します。

構文図を読む構文図をスキップするLENGTH(expression ,CODEUNITS16CODEUNITS32OCTETS )

スキーマは 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' という値を持つ可変長文字ストリングであると想定します。
       LENGTH(:ADDRESS)
    戻り値は 18 です。
  • 例 2: START_DATE が DATE タイプの列であると想定します。
       LENGTH(START_DATE)
    戻り値は 4 です。
  • 例 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 表現が格納されると想定します。
       SELECT LENGTH(UTF8_VAR, CODEUNITS16),
         LENGTH(UTF8_VAR, CODEUNITS32),
         LENGTH(UTF8_VAR, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    それぞれ、値 6、5、9 を戻します。
    変数 UTF16_VAR に、ストリングの UTF-16BE 表現が格納されると想定します。
       SELECT LENGTH(UTF16_VAR, CODEUNITS16),
          LENGTH(UTF16_VAR, CODEUNITS32),
          LENGTH(UTF16_VAR, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    それぞれ、値 6、5、12 を戻します。