Función escalar CHAR

La función CHAR devuelve una representación de serie de caracteres de longitud fija de un valor de un tipo de datos diferente.

De entero a CHAR

Read syntax diagramSkip visual syntax diagramCHAR(integer-expression )

De decimal a CHAR

Read syntax diagramSkip visual syntax diagramCHAR(decimal-expression ,decimal-character)

De coma flotante a CHAR

Read syntax diagramSkip visual syntax diagram CHAR(floating-point-expression ,decimal-character )

De coma flotante a CHAR

Read syntax diagramSkip visual syntax diagramCHAR(decimal-floating-point-expression ,decimal-character )

De serie de caracteres a CHAR

Read syntax diagramSkip visual syntax diagramCHAR(character-expression ,integer)

De serie gráfica a CHAR

Read syntax diagramSkip visual syntax diagramCHAR(graphic-expression ,integer)

De serie binaria a CHAR

Read syntax diagramSkip visual syntax diagram CHAR ( binary-expression ,integer )

De fecha y hora a CHAR

Read syntax diagramSkip visual syntax diagramCHAR(datetime-expression ,ISOUSAEURJISLOCAL)

De booleano a CHAR

Read syntax diagramSkip visual syntax diagram CHAR ( boolean-expression )

El esquema es SYSIBM. El nombre de la función no puede especificarse como nombre calificado si se utilizan palabras clave en la signatura de la función. La signatura SYSFUN.CHAR(expresión-coma-flotante) continúa estando disponible. En este caso, el carácter decimal es sensible la configuración local y, por lo tanto, devuelve un punto o una coma, dependiendo del idioma del servidor de la base de datos.

Integer to CHAR
expresión-entero
Una expresión que devuelve un valor que es un tipo de datos de entero (SMALLINT, INTEGER o BIGINT).
El resultado es una representación en forma de serie de caracteres de longitud fija de expresión-entero en forma de constante entera SQL. El resultado consta de n caracteres, que representan los dígitos significativos del argumento, precedido por un signo menos si el argumento es negativo. El resultado se alinea a la izquierda. Si el tipo de datos del primer argumento es:
  • SMALLINT, la longitud del resultado es 6
  • INTEGER, la longitud del resultado es 11
  • BIGINT, la longitud del resultado es 20
Si el número de bytes en el resultado es menor que la longitud definida del resultado, éste se rellena por la derecha con espacios en blanco de un sólo byte.

La página de códigos del resultado es la página de códigos de la sección.

Decimal to CHAR
expresión-decimal
Una expresión que devuelve un valor que es de un tipo de datos decimal. Si se necesita una precisión y escala diferentes, puede utilizarse primero la función escalar DECIMAL para realizar el cambio.
carácter-decimal
Especifica la constante de caracteres de un sólo byte que se utiliza para delimitar los dígitos decimales en la serie de caracteres del resultado. La constante de caracteres no puede ser un dígito, el signo más (+), el signo menos (-) ni un espacio en blanco (SQLSTATE 42815). El valor por omisión es el carácter de un punto (.).

El resultado es una representación en forma de serie de caracteres de longitud fija de la expresión-decimal con el formato de una constante decimal SQL. La longitud del resultado es 2+p, donde p es la precisión de la expresión-decimal. Los ceros iniciales no se incluyen. Los ceros finales se incluyen. Si expresión-decimal es negativa, el primer carácter del resultado es un signo menos; en caso contrario, el primer carácter es un dígito o el carácter decimal. Si la escala de expresión-decimal es cero, el carácter decimal no se devuelve. Si el número de bytes en el resultado es menor que la longitud definida del resultado, éste se rellena por la derecha con espacios en blanco de un sólo byte.

La página de códigos del resultado es la página de códigos de la sección.

Floating-point to CHAR
expresión-coma-flotante
Una expresión que devuelve un valor que es de un tipo de datos de coma flotante (DOUBLE o REAL).
carácter-decimal
Especifica la constante de caracteres de un sólo byte que se utiliza para delimitar los dígitos decimales en la serie de caracteres del resultado. La constante de caracteres no puede ser un dígito, el signo más (+), el signo menos (-) ni un espacio en blanco (SQLSTATE 42815). El valor por omisión es el carácter de un punto (.).

El resultado es una representación en forma de serie de caracteres de longitud fija de la expresión-coma-flotante con el formato de una constante de coma flotante SQL. La longitud del resultado es 24. El resultado es el número menor de caracteres que puedan representar el valor de la expresión-coma-flotante, de manera que la mantisa conste de un sólo dígito que no sea cero seguido de un punto y una secuencia de dígitos. Si expresión-coma-flotante es negativa, el primer carácter del resultado es un signo menos; en caso contrario, el primer carácter es un dígito. Si expresión-coma-flotante es cero, el resultado es 0E0. Si el número de bytes en el resultado es menor que 24, el resultado se rellena por la derecha con espacios en blanco de un sólo byte.

La página de códigos del resultado es la página de códigos de la sección.

Decimal floating-point to CHAR
expresión-coma-flotante-decimal
Una expresión que devuelve un valor que es de un tipo de datos de coma flotante decimal (DECFLOAT).
carácter-decimal
Especifica la constante de caracteres de un sólo byte que se utiliza para delimitar los dígitos decimales en la serie de caracteres del resultado. La constante de caracteres no puede ser un dígito, el signo más (+), el signo menos (-) ni un espacio en blanco (SQLSTATE 42815). El valor por omisión es el carácter de un punto (.).

El resultado es una representación en forma de serie de caracteres de longitud fija de la expresión-coma-flotante-decimal con el formato de una constante de coma flotante decimal SQL. El atributo de longitud del resultado es 42. El resultado es el número menor de caracteres que puedan representar el valor de expresión-coma-flotante-decimal. Si expresión-coma-flotante-decimal es negativa, el primer carácter del resultado es un signo menos; en caso contrario, el primer carácter es un dígito. Si expresión-coma-flotante-decimal es cero, el resultado es 0.

Si el valor de expresión-coma-flotante-decimal es el valor especial Infinity, sNaN o NaN, se devuelven las series 'INFINITY', 'SNAN' y 'NAN', respectivamente. Si el valor especial es negativo, el primer carácter del resultado es un signo menos. El valor especial de coma flotante decimal sNaN no genera un aviso cuando se convierte en una serie. Si el número de caracteres en el resultado es menor que 42, éste se rellena por la derecha con espacios en blanco de un sólo byte.

La página de códigos del resultado es la página de códigos de la sección.

Character string to CHAR
expresión-caracteres
Expresión que devuelve un valor que es un tipo de datos de serie de caracteres incorporado.
entero
Constante entera que especifica el atributo de longitud para la serie de caracteres de longitud fija resultante. El valor debe estar entre 0 y la longitud máxima del tipo de datos CHAR es las unidades de serie del resultado.
Si el segundo argumento no se especifica:
  • Si la expresión-caracteres es la constante de serie vacía, el atributo de longitud del resultado es 0.
  • De lo contrario, el atributo de longitud del resultado es el menor entre los valores siguientes:
    • La longitud máxima del tipo de datos CHAR en las unidades de secuencia del resultado
    • El atributo de longitud del primer argumento.

El resultado es una serie de caracteres de longitud fija. Si expresión-caracteres es FOR BIT DATA, el resultado es FOR BIT DATA.

La longitud real es la misma que el atributo de longitud del resultado. Si ka longitud de expresión-carácter es:
  • Menor que el atributo de longitud del resultado, el resultado se rellena con blancos hasta el atributo de longitud del resultado.
  • Mayor que el atributo de longitud del resultado:
    • Si la unidad de serie del resultado es CODEUNITS32, éste se trunca. Si sólo se truncan caracteres en blanco y expresión-caracteres es CHAR o VARCHAR, no se devuelve ningún aviso. De lo contrario, se devuelve un aviso (SQLSTATE 01004).
    • Si se especifica entero, se realiza el truncamiento. Si sólo se truncan caracteres en blanco y expresión-caracteres es CHAR o VARCHAR, no se devuelve ningún aviso. De lo contrario, se devuelve un aviso (SQLSTATE 01004). Cuando se trunca parte de un carácter multibyte, ese carácter parcial se sustituye por el carácter en blanco. No confíe en este comportamiento porque puede cambiar en un release futuro.
    • Si no se especifica entero y expresión-carácter es VARCHAR, el comportamiento de truncamiento es:
      • Si sólo se deben truncar caracteres en blanco, se realiza el truncamiento sin devolver ningún aviso.
      • Si se deben truncar caracteres no en blanco, se devuelve un error (SQLSTATE 22001).
    • Si no se especifica entero y expresión-caracteres es CLOB, se devuelve un error (SQLSTATE 22001).
Graphic string to CHAR
expresión-gráfica
Expresión que devuelve un valor que es un tipo de datos de serie gráfica incorporado.
entero
Constante entera que especifica el atributo de longitud para la serie de caracteres de longitud fija resultante. El valor debe estar entre 0 y la longitud máxima del tipo de datos CHAR es las unidades de serie del resultado.
Si el segundo argumento no se especifica:
  • Si la expresión-gráfica es la constante de serie vacía, el atributo de longitud del resultado es 0.
  • Si las unidades de serie de expresión-gráfica es CODEUNITS32, el atributo de longitud del resultado es el menor de los valores siguientes:
    • La longitud máxima del tipo de datos CHAR en las unidades de secuencia del resultado.
    • El atributo de longitud del primer argumento.
  • De lo contrario, el atributo de longitud del resultado es el menor entre los valores siguientes:
    • La longitud máxima del tipo de datos CHAR en las unidades de secuencia del resultado.
    • 3 * el atributo de longitud del primer argumento.

El resultado es una serie de caracteres de longitud fija que se convierte de expresión-gráfica. La longitud real es la misma que el atributo de longitud del resultado.

Si la longitud de expresión-gráfica que se ha convertido a una serie de caracteres es:
  • Menor que el atributo de longitud del resultado, el resultado se rellena con blancos hasta el atributo de longitud del resultado.
  • Mayor que el atributo de longitud del resultado:
    • Si la unidad de serie del resultado es CODEUNITS32, éste se trunca. Si sólo se truncan caracteres en blanco y expresión-gráfica es GRAPHIC o VARGRAPHIC, no se devuelve ningún aviso. De lo contrario, se devuelve un aviso (SQLSTATE 01004).
    • Si se especifica entero y expresión-gráfica es GRAPHIC o VARGRAPHIC, el truncamiento se realiza sin que se devuelva ningún aviso.
    • Si se especifica entero y la expresión-gráfica es un DBCLOB, se realiza el truncamiento devolviendo un aviso (SQLSTATE 01004).
    • Si no se especifica entero, se devuelve un error (SQLSTATE 22001).
Binary string to CHAR
expresión-binaria
Una expresión que devuelve un valor que es un tipo de datos de serie binaria incorporado.
entero
Constante entera que especifica el atributo de longitud para la serie de caracteres de longitud fija resultante.

El resultado es una serie de caracteres FOR BIT DATA de longitud fija, rellenada con blancos, si es necesario.

Datetime to CHAR
expresión-fecha-hora
Una expresión que sea uno de los tipos de datos siguientes:
DATE
El resultado es la representación de serie de caracteres de la fecha en el formato especificado por el segundo argumento. La longitud del resultado es 10. Se devuelve un error si se especifica el segundo argumento y no es un valor válido (SQLSTATE 42703).
TIME
El resultado es la representación en forma de serie de caracteres de la hora en el formato especificado por el segundo argumento. La longitud del resultado es 8. Se devuelve un error si se especifica el segundo argumento y no es un valor válido (SQLSTATE 42703).
TIMESTAMP
El resultado es la representación de serie de caracteres de la indicación de fecha y hora. Si el tipo de datos de expresión-fecha-hora es TIMESTAMP(0), la longitud del resultado es 19. Si el tipo de datos de expresión-fecha-hora es TIMESTAMP(n), donde n es un número entre 1 y 12, la longitud del resultado es 20+n. De lo contrario, la longitud del resultado es 26. El segundo argumento no es aplicable y no se debe especificar (SQLSTATE 42815).

La página de códigos del resultado es la página de códigos de la sección.

Boolean to CHAR
expresión-booleana
Una expresión que devuelve un valor booleano (TRUE o FALSE). El resultado es 'TRUE ' (observe el espacio en blanco después de la E) o 'FALSE'.

Resultado

La función CHAR devuelve una representación en forma de serie de caracteres de longitud fija de:
  • Un número entero, si el primer argumento es SMALLINT, INTEGER o BIGINT
  • Un número decimal, si el primer argumento es un número decimal
  • Un número de coma flotante de precisión doble, si el primer argumento es DOUBLE o REAL
  • Un número de coma flotante decimal, si el primer argumento es un DECFLOAT
  • Una serie de caracteres, si el primer argumento es cualquier tipo de serie de caracteres
  • Una serie gráfica (sólo para bases de datos Unicode), si el primer argumento es cualquier tipo de serie gráfica
  • Un valor de fecha y hora, si el primer argumento es DATE, TIME o TIMESTAMP
  • Un valor booleano (TRUE o FALSE)
En una base de datos que no es Unicode, las unidades de secuencia del resultado es OCTETS. De lo contrario, las unidades de la secuencia del resultado se determinan por el tipo de datos del primer argumento.
  • OCTETS, si el primer argumento es una secuencia de caracteres o una secuencia gráfica con unidades de secuencia de OCTETS, CODEUNITS16 o bytes dobles.
  • CODEUNITS32, si el primer argumento es una secuencia de caracteres o una secuencia gráfica con unidades de secuencia de CODEUNITS32.
  • Se determina mediante la unidad de secuencia por omisión del entorno si el primer argumento no es una secuencia de caracteres o una secuencia gráfica.
En una base de datos Unicode, cuando en la serie de salida un carácter de varios bytes aparece truncado en parte:
  • Si la salida era una serie de caracteres, el carácter parcial se sustituye por uno o varios blancos
  • Si la salida era una serie gráfica, el carácter parcial se sustituye por una serie vacía
No confíe en ninguno de estos comportamientos porque podrían cambiar en una versión futura.

Si el primer argumento puede ser nulo, el resultado puede ser nulo. Si el primer argumento es nulo, el resultado es el valor nulo.

Notas

  • Aumento de la portabilidad de las aplicaciones: Si el primer argumento es numérico, o si el primer argumento es una serie y se especifica el argumento de longitud, utilice la especificación CAST en lugar de esta función para aumentar la portabilidad de las aplicaciones.
  • Decimal a carácter y ceros iniciales: En las versiones anteriores a la versión 9.7, el resultado de la entrada decimal para esta función incluye ceros iniciales y un carácter decimal final. El parámetro de configuración de base de datos dec_to_char_fmt puede establecerse en V95 para que esta función devuelva el resultado de la versión 9.5 para la entrada decimal. El valor por omisión del parámetro de configuración de base de datos dec_to_char_fmt para bases de datos nuevas es NEW, que hace que esta función devuelva resultados que coinciden con las reglas de difusión estándares de SQL y es coherente con los resultados de la función VARCHAR.

ejemplos

  • Ejemplo 1: Supongamos que la columna PRSTDATE tiene un valor interno equivalente a 1988-12-25. La función siguiente devuelve el valor '12/25/1988'.
       CHAR(PRSTDATE, USA)
  • Ejemplo 2: supongamos que la columna STARTING tiene un valor interno equivalente a 17:12:30 y que la variable del lenguaje principal HOUR_DUR (decimal(6,0)) es una duración en horas con el valor 050000 (es decir, 5 horas). La función siguiente devuelve el valor '5:12 PM'.
       CHAR(STARTING, USA)
    La función siguiente devuelve el valor '10:12 PM'.
       CHAR(STARTING + :HOUR_DUR, USA)
  • Ejemplo 3: Supongamos que la columna RECEIVED (TIMESTAMP) tiene un valor interno equivalente a la combinación de las columnas PRSTDATE y STARTING. La función siguiente devuelve el valor '1988-12-25-17.12.30.000000'.
       CHAR(RECEIVED)
  • Ejemplo 4: La columna LASTNAME se define como VARCHAR(15). La función siguiente devuelve los valores de esta columna como series de caracteres de longitud fija de 10 bytes de longitud. Los valores de LASTNAME con una longitud superior a los 10 bytes (excluidos los blancos de cola) se truncan y se devuelve un aviso.
       SELECT CHAR(LASTNAME,10) FROM EMPLOYEE
  • Ejemplo 5: La columna EDLEVEL se define como SMALLINT. La función siguiente devuelve los valores de esta columna como series de caracteres de longitud fija. Se devuelve un valor de EDLEVEL de 18 como el valor de CHAR(6) '18' seguido de cuatro espacios en blanco.
       SELECT CHAR(EDLEVEL) FROM EMPLOYEE
  • Ejemplo 6: La columna SALARY se define como DECIMAL con una precisión de 9 y una escala de 2. El valor actual (18357.50) debe visualizarse con una coma como carácter decimal (18357,50). La función siguiente devuelve el valor '18357,50' seguido de tres blancos.
       CHAR(SALARY, ',')
  • Ejemplo 7: Los valores de la columna SALARY deben restarse de 20000.25 y visualizarse con el carácter decimal por omisión. La función siguiente devuelve el valor '-0001642.75' seguido de tres espacios en blanco.
       CHAR(20000.25 - SALARY)
  • Ejemplo 8: Supongamos que la variable del lenguaje principal SEASONS_TICKETS se define como INTEGER y tiene el valor 10000. La función siguiente devuelve el valor '10000.00'.
       CHAR(DECIMAL(:SEASONS_TICKETS,7,2))
  • Ejemplo 9: supongamos que la variable del lenguaje principal DOUBLE_NUM se define como DOUBLE y tiene el valor -987.654321E-35. La función siguiente devuelve el valor '-9.87654321E-33' seguido de nueve blancos finales porque el tipo de datos de resultado es CHAR (24).
       CHAR(:DOUBLE_NUM)
  • Ejemplo 10: La sentencia siguiente devuelve una serie de tipo de datos CHAR con el valor 'TRUE'.
       values CHAR(3=3)
  • Ejemplo 11: La sentencia siguiente devuelve una serie de tipo de datos CHAR con el valor 'FALSE'.
       values CHAR(3>3)