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

Fonctionnement de la fonction UNHEX() dans MySQL

Dans MySQL, le UNHEX() La fonction vous permet de "unhex" une chaîne dans MySQL. En d'autres termes, il vous permet de convertir une valeur hexadécimale en une chaîne lisible par l'homme.

Plus précisément, la fonction interprète chaque paire de caractères dans l'argument comme un nombre hexadécimal et le convertit en octet représenté par le nombre. La valeur de retour est une chaîne binaire.

Syntaxe

La syntaxe ressemble à ceci :

UNHEX(str)

str est la chaîne à unhex.

Exemple 1 - Utilisation de base

Voici un exemple de base :

SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Résultat :

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

J'ai donc fourni une valeur hexadécimale comme argument, et la fonction a déshexé cette valeur et a renvoyé le résultat (qui est une chaîne binaire).

Exemple 2 - Convertir une chaîne en hexadécimal

On peut aussi faire l'inverse en utilisant le HEX() fonction pour convertir la chaîne en une valeur hexadécimale :

SELECT HEX('Coconut palm') AS Hexed;

Résultat :

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

Par conséquent, nous pourrions imbriquer une fonction dans l'autre, et nous obtiendrions simplement notre argument renvoyé :

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

Résultat :

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

Exemple 3 – Caractères hexadécimaux non valides

L'argument doit contenir des caractères hexadécimaux valides. Si l'un des caractères n'est pas un caractère hexadécimal valide, le résultat sera NULL :

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

Résultat :

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

Exemple 4 – Arguments numériques

Le UNHEX() La fonction ne fonctionne pas sur les équivalents hexadécimaux des valeurs numériques.

Voici un exemple de ce que je veux dire :

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

Résultat :

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

Une autre façon de le démontrer serait :

SELECT UNHEX(HEX(1234));

Résultat :

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

Donc, ce que cela nous montre, c'est que l'équivalent hexadécimal de 1234 est 4D2 , et le UNHEX() la fonction ne peut pas gérer cette valeur.

Dans de tels cas, vous pouvez utiliser le CONV() fonction à la place :

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

Résultat :

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

Dans cet exemple, nous utilisons CONV() pour convertir la valeur de base-16 (hexadécimal) en base-10 (décimal).