Función escalar LENGTH

La función LENGTH devuelve la longitud de la expresión en la unidad de la serie implícita o explícita.

Leer el esquema de sintaxisOmitir el esquema de sintaxis visualLENGTH(expresión ,CODEUNITS16CODEUNITS32OCTETS )

El esquema es SYSIBM.

expresión
Expresión que devuelve un valor que es un tipo de datos incorporado. Si expresión puede tener un valor nulo, el resultado puede ser nulo; si expresión tiene un valor nulo, el resultado es el valor nulo.
CODEUNITS16, CODEUNITS32 u OCTETS
Especifica la unidad de la serie del resultado. CODEUNITS16 especifica que el resultado debe expresarse en unidades de código UTF-16 de 16 bits. CODEUNITS32 especifica que el resultado debe expresarse en unidades de código UTF-32 de 32 bits. OCTETS especifica que el resultado debe expresarse en bytes.

Si se especifica de forma explícita una unidad de serie, y si expresión no es el dato de serie, se devuelve un error (SQLSTATE 428F5). Si la unidad de la serie se especifica como CODEUNITS16 o CODEUNITS32 y la expresión es una serie binaria o datos de bits, se devuelve un error (SQLSTATE 428GC). Si la unidad de la serie se especifica como OCTETS y la expresión es una serie binaria, se devuelve un error (SQLSTATE 42815). Para obtener más información acerca de CODEUNITS16, CODEUNITS32 y OCTETS, consulte Unidades de serie en las funciones incorporadas en Series de caracteres.

Si un argumento de unidades de serie no se especifica de forma explícita y si expresión es una serie de caracteres o serie gráfica, las unidades de serie de expresión determinan la unidad de serie que se utiliza para el resultado. En caso contrario, el valor devuelto especifica la longitud en bytes.

El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

La longitud de las series de caracteres y de gráficos incluye espacios en blanco finales. La longitud de las series binarias incluye ceros binarios. La longitud de las series de longitud variable es la longitud real y no la longitud máxima. La longitud de todos los demás valores es el número de bytes utilizados para representar el valor:

  • 2 para entero pequeño (SMALLINT)
  • 4 para entero grande (INTEGER)
  • 8 para entero superior (BIGINT)
  • (p/2)+1 para números decimales con una precisión p
  • 8 para DECFLOAT(16)
  • 16 para DECFLOAT(34)
  • La longitud de la serie para series binarias
  • La longitud de la serie para series de caracteres
  • 4 para coma flotante de precisión simple
  • 8 para coma flotante de precisión doble
  • 4 para DATE
  • 3 para TIME
  • 7+(p+1)/2 para TIMESTAMP(p)

Ejemplos

  • Ejemplo 1: supongamos que la variable del lenguaje principal es una serie de caracteres de longitud variable cuyo valor es '895 Don Mills Road'.
       LENGTH(:ADDRESS)
    devuelve el valor 18.
  • Ejemplo 2: supongamos que START_DATE es una columna de tipo DATE.
       
    LENGTH(START_DATE)
    devuelve el valor 4.
  • Ejemplo 3: el ejemplo siguiente devuelve el valor 10.
       LENGTH(CHAR(START_DATE, EUR))
  • Ejemplo 4: los ejemplos siguientes funcionan con la serie Unicode '&N~AB', siendo '&' el carácter de clave G de símbolo musical y '~' el carácter de tilde de combinación. En el ejemplo siguiente se muestra esta serie en distintos formatos de codificación 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'
    Supongamos que la variable UTF8_VAR contiene la representación UTF-8 de la serie.
       SELECT LENGTH(UTF8_VAR, 
    CODEUNITS16),
         LENGTH(UTF8_VAR, CODEUNITS32),
         LENGTH(UTF8_VAR, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    devuelve los valores 6, 5 y 9, respectivamente.
    Supongamos que la variable UTF16_VAR contiene la representación UTF-16BE de la serie.
       SELECT LENGTH(UTF16_VAR, CODEUNITS16),
          LENGTH(UTF16_VAR, CODEUNITS32),
          LENGTH(UTF16_VAR, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    devuelve los valores 6, 5 y 12, respectivamente.