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

3 formas de "desenhebrar" una cadena en MySQL

MySQL incluye varias funciones que pueden ayudarlo cuando trabaja con valores hexadecimales. Una de las funciones más obvias es HEX() función, que le permite convertir una cadena en su equivalente hexadecimal.

Sin embargo, puede haber ocasiones en las que desee volver a convertir una cadena hexadecimal en una cadena más legible. De eso se trata este artículo.

Aquí hay tres formas de "desenhebrar" una cadena en MySQL:

  • El UNHEX() función
  • La X notación hexadecimal
  • El 0x notación

A continuación se muestran ejemplos de cada uno de estos métodos.

Función UNHEX()

Esta es una función de cadena creada específicamente para "desenredar" una cadena hexadecimal.

Ejemplo:

SELECT UNHEX('4361747320616E6420646F6773');

Resultado:

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

La forma UNHEX() funciona es que 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.

La notación X

Una forma alternativa de quitar el hexadecimal de una cadena es usar X notación.

Ejemplo:

SELECT X'4361747320616E6420646F6773';

Resultado:

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

El X La notación se basa en SQL estándar. Esta notación no distingue entre mayúsculas y minúsculas, por lo que no importa si usa una X mayúscula o minúsculas. Esto contrasta con el 0x notación, que distingue entre mayúsculas y minúsculas.

Tenga en cuenta que la X la notación requiere un número par de dígitos. Si tiene un número impar de dígitos, puede rellenarlo con un cero inicial.

La notación 0x

Y la tercera forma de quitar el hexadecimal de una cadena es usar el 0x notación.

Ejemplo:

SELECT 0x4361747320616E6420646F6773;

Resultado:

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

El 0x La notación se basa en ODBC, para el cual las cadenas hexadecimales se utilizan a menudo para proporcionar valores para las columnas BLOB. Como se mencionó, el 0x la notación distingue entre mayúsculas y minúsculas, por lo que no funcionará si usa una X mayúscula .

El 0x la notación funciona con un número impar de dígitos, pero solo porque interpretará cualquier número impar como si tuviera un cero a la izquierda (lo que lo haría par).

Deshacer hexadecimal de un número

Tenga en cuenta que él HEX() La función no funciona en números. Para hacer eso, use CONV() en su lugar (vea Cómo deshexear un número en MySQL).