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

Fonction HEXTORAW() dans Oracle

Dans Oracle Database, le HEXTORAW() convertit l'hexadécimal en une valeur brute.

Syntaxe

La syntaxe ressemble à ceci :

HEXTORAW(char)

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"