sql >> Base de Datos >  >> RDS >> Mysql

Cómo funciona la función UNHEX() en MySQL

En MySQL, el UNHEX() La función le permite "desenhebrar" una cadena en MySQL. En otras palabras, le permite convertir un valor hexadecimal en una cadena legible por humanos.

Específicamente, la función interpreta cada par de caracteres en el argumento como un número hexadecimal y lo convierte al byte representado por el número. El valor de retorno es una cadena binaria.

Sintaxis

La sintaxis es así:

UNHEX(str)

Donde str es la cadena a deshex.

Ejemplo 1:uso básico

He aquí un ejemplo básico:

SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Resultado:

+--------------+
| Unhexed      |
+--------------+
| Coconut palm |
+--------------+

Así que proporcioné un valor hexadecimal como argumento, y la función quitó ese valor y devolvió el resultado (que es una cadena binaria).

Ejemplo 2:convertir una cadena a hexadecimal

También podemos hacer lo contrario usando HEX() función para convertir la cadena en un valor hexadecimal:

SELECT HEX('Coconut palm') AS Hexed;

Resultado:

+--------------------------+
| Hexed                    |
+--------------------------+
| 436F636F6E75742070616C6D |
+--------------------------+

Por lo tanto, podríamos anidar una función dentro de la otra y simplemente obtendríamos nuestro argumento:

SELECT 
  UNHEX(HEX('Coconut palm')) AS 'Result 1',
  HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';

Resultado:

+--------------+--------------------------+
| Result 1     | Result 2                 |
+--------------+--------------------------+
| Coconut palm | 436F636F6E75742070616C6D |
+--------------+--------------------------+

Ejemplo 3:caracteres hexadecimales no válidos

El argumento debe contener caracteres hexadecimales válidos. Si alguno de los caracteres no son caracteres hexadecimales válidos, el resultado será NULL :

SELECT 
  UNHEX(' '),
  UNHEX('_xyz');

Resultado:

+------------+---------------+
| UNHEX(' ') | UNHEX('_xyz') |
+------------+---------------+
| NULL       | NULL          |
+------------+---------------+

Ejemplo 4:argumentos numéricos

El UNHEX() La función no funciona en los equivalentes hexadecimales de valores numéricos.

He aquí un ejemplo de lo que quiero decir:

SELECT 
  HEX(1234),
  UNHEX('4D2');

Resultado:

+-----------+--------------+
| HEX(1234) | UNHEX('4D2') |
+-----------+--------------+
| 4D2       | ?            |
+-----------+--------------+

Otra forma de demostrar esto sería:

SELECT UNHEX(HEX(1234));

Resultado:

+------------------+
| UNHEX(HEX(1234)) |
+------------------+
| ?                |
+------------------+

Entonces, lo que esto nos muestra es que el equivalente hexadecimal de 1234 es 4D2 , y UNHEX() la función no puede manejar ese valor.

En tales casos, puede usar CONV() función en su lugar:

SELECT 
  HEX(1234),
  CONV('4D2', 16, 10),
  CONV(HEX(1234), 16, 10);

Resultado:

+-----------+---------------------+-------------------------+
| HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) |
+-----------+---------------------+-------------------------+
| 4D2       | 1234                | 1234                    |
+-----------+---------------------+-------------------------+

En este ejemplo, usamos CONV() para convertir el valor de base-16 (hexadecimal) a base-10 (decimal).