sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona UNHEX() en MariaDB

En MariaDB, UNHEX() es una función de cadena incorporada que realiza la operación inversa de HEX() función.

Mientras que, el HEX() La función devuelve una representación hexadecimal de una cadena dada, el UNHEX() La función devuelve la representación de cadena de un valor hexadecimal dado.

Específicamente, UNHEX() interpreta cada par de dígitos hexadecimales en su argumento como un número y luego lo convierte al carácter representado por el número.

El resultado se devuelve como una cadena binaria.

Sintaxis

La sintaxis es así:

UNHEX(str)

Donde str es el valor hexadecimal para ser "sin hexadecimal".

Ejemplo

He aquí un ejemplo básico:

SELECT UNHEX('61');

Resultado:

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

La representación hexadecimal de la letra minúscula a es 61 , y así pasando 61 al UNHEX() función, obtenemos la letra minúscula a .

Aquí hay un ejemplo que recorre algunos valores hexadecimales más:

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');

Resultado (usando salida vertical):

                      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

Comparado con HEX()

Aquí hay un ejemplo que anida HEX() dentro de UNHEX() para devolver la cadena original:

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

Resultado:

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

Sin embargo, tenga en cuenta que UNHEX() devuelve su resultado como una cadena binaria:

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

Resultado:

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

Argumentos nulos

Pasando null a UNHEX() da como resultado null :

SELECT UNHEX(null);

Resultado:

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

Pasar Sin Argumentos

Llamando a UNHEX() sin pasar ningún argumento da como resultado un error:

SELECT UNHEX();

Resultado:

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