MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona UNHEX() in MariaDB

In MariaDB, UNHEX() è una funzione di stringa incorporata che esegue l'operazione inversa di HEX() funzione.

Considerando che HEX() La funzione restituisce una rappresentazione esadecimale di una determinata stringa, il UNHEX() La funzione restituisce la rappresentazione di stringa di un dato valore esadecimale.

In particolare, UNHEX() interpreta ogni coppia di cifre esadecimali nel suo argomento come un numero, quindi lo converte nel carattere rappresentato dal numero.

Il risultato viene restituito come una stringa binaria.

Sintassi

La sintassi è questa:

UNHEX(str)

Dove str è il valore esadecimale da "non esadecimale".

Esempio

Ecco un esempio di base:

SELECT UNHEX('61');

Risultato:

+-------------+
| UNHEX('61') |
+-------------+
| a           |
+-------------+

La rappresentazione esadecimale della lettera minuscola a è 61 , e quindi passando 61 al UNHEX() funzione, otteniamo la lettera minuscola a .

Ecco un esempio che scorre attraverso alcuni altri valori esadecimali:

SELECT 
    UNHEX('61'),
    UNHEX('6161'),
    UNHEX('41'),
    UNHEX('4141'),
    UNHEX('62'),
    UNHEX('6262'),
    UNHEX('42'),
    UNHEX('4242'),
    UNHEX('436174'),
    UNHEX('446F67'),
    UNHEX('50617773202620436C617773'),
    UNHEX('5A65627261');

Risultato (usando l'output verticale):

                      UNHEX('61'): a
                    UNHEX('6161'): aa
                      UNHEX('41'): A
                    UNHEX('4141'): AA
                      UNHEX('62'): b
                    UNHEX('6262'): bb
                      UNHEX('42'): B
                    UNHEX('4242'): BB
                  UNHEX('436174'): Cat
                  UNHEX('446F67'): Dog
UNHEX('50617773202620436C617773'): Paws & Claws
              UNHEX('5A65627261'): Zebra

Rispetto a HEX()

Ecco un esempio che nidifica HEX() dentro UNHEX() per restituire la stringa originale:

SELECT 
    HEX('Homer Jay'),
    UNHEX(HEX('Homer Jay'));

Risultato:

+--------------------+-------------------------+
| HEX('Homer Jay')   | UNHEX(HEX('Homer Jay')) |
+--------------------+-------------------------+
| 486F6D6572204A6179 | Homer Jay               |
+--------------------+-------------------------+

Tuttavia, tieni presente che UNHEX() restituisce il risultato come stringa binaria:

SELECT 
    COLLATION('Homer Jay') AS "Literal",
    COLLATION(HEX('Homer Jay')) AS "HEX()",
    COLLATION(UNHEX(HEX('Homer Jay'))) AS "UNHEX()";

Risultato:

+-----------------+-----------------+---------+
| Literal         | HEX()           | UNHEX() |
+-----------------+-----------------+---------+
| utf8_general_ci | utf8_general_ci | binary  |
+-----------------+-----------------+---------+

Argomenti nulli

Passaggio null a UNHEX() risulta null :

SELECT UNHEX(null);

Risultato:

+-------------+
| UNHEX(null) |
+-------------+
| NULL        |
+-------------+

Nessun argomento superato

Chiamando UNHEX() senza passare alcun argomento genera un errore:

SELECT UNHEX();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNHEX'