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

Cómo convertir decimal a hexadecimal usando TO_CHAR() en Oracle

En Oracle Database, puede usar TO_CHAR() función para convertir un número a su equivalente hexadecimal. Para hacer esto, use la X elemento de formato.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT TO_CHAR(15, 'X')
FROM DUAL;

Resultado:

   TO_CHAR(15,'X') 
__________________ 
 F                

F es el equivalente hexadecimal de 15 y eso es lo que se devuelve.

Ceros a la izquierda

Puede preceder este elemento solo con 0 (que devuelve ceros a la izquierda) o FM (que suprime el relleno).

Esto es lo que sucede cuando lo precedemos con 0 :

SELECT TO_CHAR(15, '0X')
FROM DUAL;

Resultado:

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

Suprimir los espacios en blanco iniciales

Si no especifica ninguno 0 ni FM con X , entonces el valor de retorno siempre tiene un espacio en blanco inicial.

Esto es lo que sucede cuando usamos la FM modificador de formato para suprimir el relleno:

SELECT TO_CHAR(15, 'fm0X')
FROM DUAL;

Resultado:

   TO_CHAR(15,'FM0X') 
_____________________ 
0F                    

El espacio inicial ha desaparecido.

Mayúsculas vs Minúsculas

Pasar una X mayúscula da como resultado un valor hexadecimal en mayúsculas y pasa un x en minúsculas da como resultado un valor hexadecimal en minúsculas:

SELECT  
    TO_CHAR(15345, 'fm0XXXX'),
    TO_CHAR(15345, 'fm0xxxx')
FROM DUAL;

Resultado:

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

No enteros

Si el número no es un entero, entonces se redondea al entero más cercano:

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