sql >> Base de Datos >  >> RDS >> Oracle

Función HEXTORAW() en Oracle

En Oracle Database, el HEXTORAW() La función convierte hexadecimal a un valor bruto.

Sintaxis

La sintaxis es así:

HEXTORAW(char)

Donde char puede ser cualquiera de los CHAR , VARCHAR2 , NCHAR o NVARCHAR2 tipos de datos.

Ejemplo

He aquí un ejemplo:

SELECT HEXTORAW('74a5cfe') FROM DUAL;

Resultado:

074A5CFE

Podemos usar el DUMP() función para averiguar el tipo de datos del valor devuelto:

SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;

Resultado:

Typ=23 Len=4: 7,74,92,254

El Typ=23 nos dice que el valor devuelto es del tipo 23, que es el tipo de ID para RAW .

Para que quede claro, aquí hay un ejemplo que compara la cadena hexadecimal y el valor sin formato:

SELECT 
    DUMP('123') AS "r1",
    DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;

Resultado:

                       r1                    r2 
_________________________ _____________________ 
Typ=96 Len=3: 49,50,51    Typ=23 Len=2: 1,35   

El valor hexadecimal es del tipo 96, que es el tipo de ID para CHAR y NCHAR .

Caracteres no hexadecimales

Pasar un valor que no es un valor hexadecimal genera un error.

Ejemplo:

SELECT HEXTORAW('z') FROM DUAL;

Resultado:

Error report -
ORA-01465: invalid hex number

Argumento nulo

Si el argumento es null , el resultado es null :

SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;

Resultado:

null

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que se produce un valor nulo como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Recuento de argumentos no válidos

Llamar a HEXTORAW() sin ningún argumento da como resultado un error:

SELECT HEXTORAW()
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

Y pasar demasiados argumentos también da como resultado un error:

SELECT HEXTORAW('a', 'b')
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"