Función escalar VARCHAR

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

De entero binario a VARCHAR

Read syntax diagramSkip visual syntax diagramVARCHAR(integer-expression )

De decimal a VARCHAR

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

De coma flotante a VARCHAR

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

De coma flotante decimal a VARCHAR

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

De serie de caracteres a VARCHAR

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

De serie gráfica a VARCHAR

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

De serie binaria a VARCHAR

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

De fecha y hora a VARCHAR

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

De booleano a VARCHAR

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

Vector a VARCHAR

Read syntax diagramSkip visual syntax diagram VARCHAR ( vector-expression,integer )

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.

De entero binario a VARCHAR
expresión entera
Una expresión que devuelve un valor que es un tipo de datos de entero (SMALLINT, INTEGER o BIGINT).
El resultado es la representación de cadena de longitud variable de la expresión entera en forma de constante entera SQL. El atributo de longitud del resultado depende de si la expresión entera es un entero pequeño, grande o grande, como se indica a continuación:
  • Si el primer argumento es un entero pequeño, la longitud máxima del resultado es de 6.
  • Si el primer argumento es un entero grande, la longitud máxima del resultado es de 11.
  • Si el primer argumento es un entero superior, la longitud máxima del resultado es de 20.

La longitud real del resultado es el número menor de caracteres que se puede utilizar para representar el valor del argumento. Los ceros iniciales no se incluyen. Si el argumento es negativo, el primer carácter del resultado es un signo menos. Si no, el primer carácter es un dígito.

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

De decimal a VARCHAR
expresión decimal
Una expresión que devuelve un valor que es de un tipo de datos decimal. La función escalar DECIMAL puede utilizarse para cambiar la precisión y la escala.
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 de cadena de caracteres de longitud variable de la expresión decimal en forma de constante decimal SQL. El atributo de longitud del resultado es 2+p, donde p es la precisión de la expresión decimal. La longitud real del resultado es el número menor de caracteres que se puede utilizar para representar el resultado, salvo que los ceros finales se incluyen. Los ceros iniciales no 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 del carácter decimal. Si la escala de la expresión decimal es cero, no se devuelve el carácter decimal.

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

De coma flotante a VARCHAR
expresión de punto 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 de serie de caracteres de longitud variable de la expresión-coma-flotante con el formato de una constante de coma flotante SQL.

La longitud máxima del resultado es 24. La longitud real del resultado es el número menor de caracteres que puede representar el valor de expresión-coma-flotante, de manera que la mantisa conste de un sólo dígito que no sea cero seguido del carácter-decimal 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.

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

De coma flotante decimal a VARCHAR
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 de serie de caracteres de longitud variable de expresión-coma-decimal-flotante con el formato de una constante de coma flotante decimal SQL. La longitud máxima del resultado es 42. La longitud real del resultado es el número menor de caracteres que puede 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.

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

De serie de caracteres a VARCHAR
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 variable resultante. El valor ha de estar comprendido entre 0 y la longitud máxima del tipo de datos VARCHAR en las unidades de serie del resultado.
Si no se especifica el segundo argumento:
  • 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 VARCHAR en las unidades de secuencia del resultado
    • El atributo de longitud del primer argumento

El resultado es una serie de caracteres de longitud variable. El atributo de longitud del resultado lo determina el valor de entero. Si expresión-caracteres es el subtipo FOR BIT DATA, el resultado es FOR BIT DATA.

Si la longitud de expresión-caracteres es mayor que el atributo de longitud del resultado, existen varios escenarios:
  • 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, se devuelve un error (SQLSTATE 22001).
De serie gráfica a VARCHAR
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 variable resultante. El valor ha de estar comprendido entre 0 y la longitud máxima del tipo de datos VARCHAR en 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 son CODEUNITS32, el atributo de longitud del resultado es el menor de los valores siguientes:
    • La longitud máxima del tipo de datos VARCHAR 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 VARCHAR en las unidades de secuencia del resultado
    • 3 * el atributo de longitud del primer argumento

El resultado es una serie de caracteres de longitud variable que se convierte de expresión-gráfica. El atributo de longitud del resultado lo determina el valor de entero.

Si la longitud de expresión-gráfica que se convierte en una serie de caracteres es mayor que el atributo de longitud del resultado, existen varios escenarios:
  • 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 expresión-gráfica es un DBCLOB, se realiza el truncamiento devolviendo un aviso (SQLSTATE 01004).
  • Si no se especifica entero y expresión-gráfica es GRAPHIC o VARGRAPHIC, el truncamiento se realiza sin que se devuelva ningún aviso.
  • Si no se especifica entero y expresión-gráfica es un DBCLOB, se devuelve un error (SQLSTATE 22001).
De serie binaria a VARCHAR
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 variable resultante. El valor ha de estar comprendido entre 0 y la longitud máxima del tipo de datos VARCHAR en las unidades de serie del resultado.

El resultado es una serie de caracteres FOR BIT DATA.

De fecha y hora a VARCHAR
expresión-fecha-hora
Una expresión que sea uno de los tipos de datos siguientes:
FECHA
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).
HORA
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 se debe especificar (SQLSTATE 42815).

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

De booleano a VARCHAR
expresión-booleana
Una expresión que devuelve un valor booleano (TRUE o FALSE). El resultado es 'TRUE' o 'FALSE'.
Vector a VARCHAR
vector-expresión
Una expresión que devuelve un valor que es un tipo de datos vectorial incorporado.
entero
Constante entera que especifica el atributo de longitud para la serie de caracteres de longitud variable resultante. El valor debe estar comprendido entre 0 y la longitud máxima para el tipo de datos VARCHAR en las unidades de cadena por defecto. Si no se especifica el segundo argumento, el atributo de longitud del resultado vendrá determinado por los siguientes valores:
  • La dimensión (D) de la expresión vectorial.
  • El tipo de coordenada de la expresión vectorial.
  • La longitud máxima para el tipo de datos VARCHAR en las unidades de cadena por defecto (L).
Si el tipo de coordenada es INT8, el atributo de longitud se calcula utilizando MIN( D*5+1, L).
Si el tipo de coordenada es FLOAT32, el atributo de longitud se calcula utilizando MIN( D*16+1, L).
El resultado es una cadena de caracteres de longitud variable en las unidades de cadena predeterminadas. Si la longitud serializada de tne vector-expression es mayor que el atributo length del resultado, se devuelve un error (SQLSTATE 22001).

Result

La función VARCHAR devuelve una representación de serie de caracteres de longitud variable de:
  • Un número entero, si el único argumento es un valor SMALLINT, INTEGER o BIGINT
  • Un número decimal, si el primer argumento es un valor DECIMAL
  • Un número de coma flotante de precisión doble, si el primer argumento es un valor de coma flotante (DOUBLE o REAL)
  • Un número decimal de coma flotante, si el primer argumento es un valor de coma flotante decimal (DECFLOAT)
  • Una serie de caracteres, si el primer argumento es un valor de serie de caracteres (CHAR, VARCHAR o CLOB)
  • Una serie gráfica (sólo bases de datos Unicode), si el primer argumento es un valor de serie gráfica (GRAPHIC, VARGRAPHIC o DBCLOB)
  • Un valor de fecha y hora, si el primer argumento es un valor de fecha y hora (DATE, TIME o TIMESTAMP)
  • Un valor booleano ('TRUE' o 'FALSE'), si el único argumento es un valor BOOLEAN (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 los releases futuros.

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 cadena y se especifica el argumento de longitud, utilice la especificación CAST en lugar de esta función para aumentar la portabilidad de sus aplicaciones.

ejemplos

  • Ejemplo 1: Cree una longitud variable EMPNO con una longitud de 10.
       SELECT VARCHAR(EMPNO,10)
         INTO :VARHV
         FROM EMPLOYEE
  • Ejemplo 2: Establezca la variable del lenguaje principal JOB_DESC, definida como VARCHAR(8), en el equivalente VARCHAR de la descripción de trabajo (que es el valor de la columna JOB), definida como CHAR(8), para la empleada Dolores Quintana.
       SELECT VARCHAR(JOB)
         INTO :JOB_DESC
         FROM EMPLOYEE
         WHERE LASTNAME = 'QUINTANA'
  • Ejemplo 3: La columna EDLEVEL se define como SMALLINT. Lo siguiente devuelve el valor como serie de caracteres de longitud variable.
       SELECT VARCHAR(EDLEVEL)
         FROM EMPLOYEE
         WHERE LASTNAME = 'HAAS'
    Genera el valor '18'.
  • Ejemplo 4: Las columnas SALARY y COMM se definen como DECIMAL con una precisión de 9 y una escala de 2. Devuelve el total de ingresos para el empleado Haas utilizando el carácter decimal de la coma.
       SELECT VARCHAR(SALARY + COMM, ',')
         FROM EMPLOYEE
         WHERE LASTNAME = 'HAAS'
    Genera el valor '56970,00'.
  • Ejemplo 5: La sentencia siguiente devuelve una serie de tipo de datos VARCHAR con el valor 'TRUE'.
       values VARCHAR(3=3)
  • Ejemplo 6: La sentencia siguiente devuelve una serie de tipo de datos VARCHAR con el valor 'FALSE'.
       values VARCHAR(3>3)