Función escalar HEX

La función HEX devuelve una representación hexadecimal de un valor como una serie de caracteres.

Leer el esquema de sintaxisOmitir el esquema de sintaxis visualHEX(expresión)

El esquema es SYSIBM.

expresión
Una expresión que devuelve un valor de cualquier tipo de dato incorporado que no sea XML, con una longitud máxima de 16 336 bytes.

El resultado de la función es una secuencia de caracteres con unidades de secuencia de OCTETS. Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

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

El resultado es una serie de dígitos hexadecimales. Los dos primeros bytes representan el primer byte del argumento, los dos siguientes el segundo byte del argumento, etcétera. Si el argumento es un valor de indicación de fecha y hora o un valor numérico el resultado es la representación hexadecimal del formato interno del argumento. La representación hexadecimal que se devuelve puede ser diferente según el servidor de aplicaciones donde se ejecuta la función. Los casos en que las diferencias pueden ser evidentes son:
  • Los argumentos de serie de caracteres cuando se ejecuta la función HEX en un cliente ASCII con un servidor EBCDIC o en un cliente EBCDIC con un servidor ASCII.
  • Los argumentos numéricos (en algunos casos) cuando se ejecuta la función HEX donde los sistemas cliente y servidor tienen distintas clasificaciones de bytes para los valores numéricos.

El tipo y longitud del resultado varían en base al tipo, longitud y unidades de secuencia de los argumentos de secuencia gráfica y de caracteres.

Tabla 1. El tipo de datos del resultado como una función de los tipos de datos del tipo de datos de argumento y el atributo de longitud
Tipo de datos de argumento1 Atributo de longitud2 Tipo de datos del resultado
CHAR(A) o BINARY(A) A<128 CHAR(A*2)
CHAR(A) o BINARY(A) A>127 VARCHAR(A*2)
VARCHAR(A), VARBINARY(A), CLOB(A) o BLOB(A) A<16337 VARCHAR(A*2)
GRAPHIC(A) A<64 CHAR(A*2*2)
GRAPHIC(A) A>63 VARCHAR(A*2*2)
VARGRAPHIC(A) o DBCLOB(A) A<8169 VARCHAR(A*2*2)
CHAR(A CODEUNITS32) A<64 VARCHAR(A*4*2)
VARCHAR(A CODEUNITS32) o CLOB(A CODEUNITS32) A<4085 VARCHAR(A*4*2)
GRAPHIC(A CODEUNITS32) A<64 VARCHAR(A*2*2*2)
VARGRAPHIC(A CODEUNITS32) o DBCLOB(A CODEUNITS32) A<4085 VARCHAR(A*2*2*2)
1. Si no se especifican las unidades de secuencia, entonces las unidades de secuencia del tipo de datos no son CODEUNITS32.
2. Los atributos de longitud máxima reflejan el límite del tipo de datos o el límite de 16336 bytes para un argumento de entrada.

Ejemplos

Supongamos que utiliza un servidor de aplicaciones de base de datos en Linux para los siguientes ejemplos.

  • Ejemplo 1: Utilizando la tabla DEPARTMENT establece la variable host HEX_MGRNO (char(12)) en la representación hexadecimal del número de gestor (MGRNO) para el departamento PLANNING (DEPTNAME).
       SELECT HEX(MGRNO)
         INTO :HEX_MGRNO
         FROM DEPARTMENT
         WHERE DEPTNAME = 'PLANNING'
    HEX_MGRNO se establecerá en 303030303230 cuando se utilice la tabla de ejemplo (el valor de caracteres es 000020).
  • Ejemplo 2: Supongamos que COL_1 es una columna con un tipo de datos de char(1) y un valor de B. La representación hexadecimal de la letra B es X'42'. HEX(COL_1) devuelve una serie de dos bytes de longitud 42.
  • Ejemplo 3: supongamos que COL_3 es una columna con un tipo de datos de decimal(6,2) y un valor de 40,1. Una serie de ocho bytes 0004010C es el resultado de aplicar la función HEX a la representación interna del valor decimal, 40,1.