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

Como converter decimal para hexadecimal usando TO_CHAR() no Oracle


No Oracle Database, você pode usar o TO_CHAR() função para converter um número em seu equivalente hexadecimal. Para fazer isso, use o X elemento de formato.

Exemplo


Segue um exemplo para demonstrar:
SELECT TO_CHAR(15, 'X')
FROM DUAL;

Resultado:
   TO_CHAR(15,'X') 
__________________ 
 F                

F é o equivalente hexadecimal a 15 e é isso que é retornado.

Zeros à esquerda


Você pode preceder este elemento apenas com 0 (que retorna zeros à esquerda) ou FM (que suprime o preenchimento).

Veja o que acontece quando o precedemos com 0 :
SELECT TO_CHAR(15, '0X')
FROM DUAL;

Resultado:
   TO_CHAR(15,'0X') 
___________________ 
 0F                

Suprimir espaços em branco à esquerda


Se você não especificar 0 nem FM com X , o valor de retorno sempre terá um espaço em branco à esquerda.

Veja o que acontece quando usamos o FM modificador de formato para suprimir o preenchimento:
SELECT TO_CHAR(15, 'fm0X')
FROM DUAL;

Resultado:
   TO_CHAR(15,'FM0X') 
_____________________ 
0F                    

O espaço principal desapareceu.

Maiúsculas x Minúsculas


Passando um X maiúsculo resulta em um valor hexadecimal maiúsculo e passa um x minúsculo resulta em um valor hexadecimal minúsculo:
SELECT  
    TO_CHAR(15345, 'fm0XXXX'),
    TO_CHAR(15345, 'fm0xxxx')
FROM DUAL;

Resultado:
   TO_CHAR(15345,'FM0XXXX')    TO_CHAR(15345,'FM0XXXX') 
___________________________ ___________________________ 
03BF1                       03bf1                      

Não inteiros


Se o número não for um inteiro, ele será arredondado para o inteiro mais próximo:
SELECT  
    TO_CHAR(12.49, 'fm0xxxx') AS "12.49",
    TO_CHAR(12.50, 'fm0xxxx') AS "12.50"
FROM DUAL;

Resultado:
   12.49    12.50 
________ ________ 
0000c    0000d