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"