Función escalar HEX
La función HEX devuelve una representación hexadecimal de un valor como una serie de caracteres.
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.
| 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).
HEX_MGRNO se establecerá enSELECT HEX(MGRNO) INTO :HEX_MGRNO FROM DEPARTMENT WHERE DEPTNAME = 'PLANNING'303030303230
cuando se utilice la tabla de ejemplo (el valor de caracteres es000020
). - 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 letraB
es X'42'. HEX(COL_1) devuelve una serie de dos bytes de longitud42
. - 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.
