Dans Oracle Database, le HEXTORAW()
convertit l'hexadécimal en une valeur brute.
Syntaxe
La syntaxe ressemble à ceci :
HEXTORAW(char)
Où char
peut être l'un des CHAR
, VARCHAR2
, NCHAR
, ou NVARCHAR2
types de données.
Exemple
Voici un exemple :
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Résultat :
074A5CFE
Nous pouvons utiliser le DUMP()
fonction pour connaître le type de données de la valeur de retour :
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Résultat :
Typ=23 Len=4: 7,74,92,254
Le Typ=23
nous indique que la valeur de retour est de type 23, qui est l'ID de type pour RAW
.
Juste pour être clair, voici un exemple qui compare la chaîne hexadécimale et la valeur brute :
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Résultat :
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
La valeur hexadécimale est de type 96, qui est l'ID de type pour CHAR
et NCHAR
.
Caractères non hexadécimaux
La transmission d'une valeur qui n'est pas une valeur hexadécimale entraîne une erreur.
Exemple :
SELECT HEXTORAW('z') FROM DUAL;
Résultat :
Error report - ORA-01465: invalid hex number
Argument nul
Si l'argument est null
, le résultat est null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Résultat :
null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois qu'une valeur nulle se produit à la suite d'un SELECT
SQL déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Nombre d'arguments non valides
Appelant HEXTORAW()
sans aucun argument génère une erreur :
SELECT HEXTORAW()
FROM DUAL;
Résultat :
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Et passer trop d'arguments entraîne également une erreur :
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Résultat :
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"