Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment convertir un décimal en hexadécimal à l'aide de TO_CHAR() dans Oracle

Dans Oracle Database, vous pouvez utiliser le TO_CHAR() fonction pour convertir un nombre en son équivalent hexadécimal. Pour cela, utilisez le X élément de format.

Exemple

Voici un exemple pour illustrer :

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

Résultat :

   TO_CHAR(15,'X') 
__________________ 
 F                

F est l'équivalent hexadécimal de 15 et c'est donc ce qui est renvoyé.

Zéros non significatifs

Vous ne pouvez faire précéder cet élément que de 0 (qui renvoie des zéros non significatifs) ou FM (qui supprime le rembourrage).

Voici ce qui se passe lorsque nous le précédons de 0 :

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

Résultat :

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

Supprimer les blancs de début

Si vous ne spécifiez ni 0 ni FM avec X , la valeur de retour a toujours un espace en tête.

Voici ce qui se passe lorsque nous utilisons le FM modificateur de format pour supprimer le rembourrage :

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

Résultat :

   TO_CHAR(15,'FM0X') 
_____________________ 
0F                    

L'espace de début a disparu.

Majuscule vs Minuscule

Passer un X majuscule donne une valeur hexadécimale en majuscule et passe un x en minuscule donne une valeur hexadécimale en minuscule :

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

Résultat :

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

Non entiers

Si le nombre n'est pas un entier, alors il est arrondi à l'entier le plus proche :

SELECT  
    TO_CHAR(12.49, 'fm0xxxx') AS "12.49",
    TO_CHAR(12.50, 'fm0xxxx') AS "12.50"
FROM DUAL;

Résultat :

   12.49    12.50 
________ ________ 
0000c    0000d