Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função HEXTORAW() no Oracle


No banco de dados Oracle, o HEXTORAW() função converte hexadecimal em um valor bruto.

Sintaxe


A sintaxe fica assim:
HEXTORAW(char)

Onde char pode ser qualquer um dos CHAR , VARCHAR2 , NCHAR , ou NVARCHAR2 tipos de dados.

Exemplo


Aqui está um exemplo:
SELECT HEXTORAW('74a5cfe') FROM DUAL;

Resultado:
074A5CFE

Podemos usar o DUMP() função para descobrir o tipo de dados do valor de retorno:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;

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

O Typ=23 informa que o valor de retorno é do tipo 23, que é o ID do tipo para RAW .

Só para ficar claro, aqui está um exemplo que compara a string hexadecimal e o valor bruto:
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   

O valor hexadecimal é do tipo 96, que é o ID do tipo para CHAR e NCHAR .

Caracteres não hexadecimais


Passar um valor que não é um valor hexadecimal resulta em um erro.

Exemplo:
SELECT HEXTORAW('z') FROM DUAL;

Resultado:
Error report -
ORA-01465: invalid hex number

Argumento nulo

Se o argumento for null , o resultado é null :

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

Resultado:

null

Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que um valor nulo ocorre como resultado de um SQL SELECT demonstração.

No entanto, você pode usar SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido.

Contagem de argumentos inválidos

Chamando HEXTORAW() sem nenhum argumento resulta em um erro:

SELECT HEXTORAW()
FROM DUAL;

Resultado:

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

E passar muitos argumentos também resulta em um erro:
SELECT HEXTORAW('a', 'b')
FROM DUAL;

Resultado:

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