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

3 manières de "Déhexer" une chaîne dans MySQL

MySQL comprend diverses fonctions qui peuvent vous aider lorsque vous travaillez avec des valeurs hexadécimales. L'une des fonctions les plus évidentes est le HEX() qui vous permet de convertir une chaîne en son équivalent hexadécimal.

Cependant, il peut arriver que vous souhaitiez reconvertir une chaîne hexadécimale en une chaîne plus lisible. C'est le sujet de cet article.

Voici trois manières de « déhexer » une chaîne dans MySQL :

  • Le UNHEX() fonction
  • Le X notation hexadécimale
  • Le 0x notation

Vous trouverez ci-dessous des exemples de chacune de ces méthodes.

La fonction UNHEX()

Il s'agit d'une fonction de chaîne conçue spécifiquement pour « unhexing » une chaîne hexadécimale.

Exemple :

SELECT UNHEX('4361747320616E6420646F6773');

Résultat :

+-------------------------------------+
| UNHEX('4361747320616E6420646F6773') |
+-------------------------------------+
| Cats and dogs                       |
+-------------------------------------+

La façon dont UNHEX() fonctionne est qu'il 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.

La notation X

Une autre façon de déshexader une chaîne est d'utiliser le X notation.

Exemple :

SELECT X'4361747320616E6420646F6773';

Résultat :

+-------------------------------+
| X'4361747320616E6420646F6773' |
+-------------------------------+
| Cats and dogs                 |
+-------------------------------+

Le X La notation est basée sur le SQL standard. Cette notation est insensible à la casse, donc peu importe que vous utilisiez un X majuscule ou minuscule. Ceci est en contraste avec le 0x notation, qui est sensible à la casse.

Notez que le X la notation nécessite un nombre pair de chiffres. Si vous avez un nombre impair de chiffres, vous pouvez le compléter avec un zéro non significatif.

La notation 0x

Et la troisième façon d'unhex une chaîne est d'utiliser le 0x notation.

Exemple :

SELECT 0x4361747320616E6420646F6773;

Résultat :

+------------------------------+
| 0x4361747320616E6420646F6773 |
+------------------------------+
| Cats and dogs                |
+------------------------------+

Le 0x La notation est basée sur ODBC, pour laquelle des chaînes hexadécimales sont souvent utilisées pour fournir des valeurs aux colonnes BLOB. Comme mentionné, le 0x la notation est sensible à la casse, donc cela ne fonctionnera pas si vous utilisez un X majuscule .

Le 0x la notation fonctionne avec un nombre impair de chiffres, mais uniquement parce qu'elle interprètera tout nombre impair comme ayant un zéro non significatif (ce qui le rend pair).

Déhexer un nombre

Notez qu'il HEX() la fonction ne fonctionne pas sur les nombres. Pour ce faire, utilisez le CONV() fonction à la place (voir Comment déhexer un nombre dans MySQL).