sql >> Databáze >  >> RDS >> Mysql

3 způsoby, jak „Unhex“ řetězec v MySQL

MySQL obsahuje různé funkce, které vám mohou pomoci při práci s hexadecimálními hodnotami. Jednou z nejviditelnějších funkcí je HEX() funkce, která vám umožňuje převést řetězec na jeho hexadecimální ekvivalent.

Mohou však nastat situace, kdy budete chtít převést hexadecimální řetězec zpět na čitelnější řetězec. O tom je tento článek.

Zde jsou tři způsoby, jak „odemknout“ řetězec v MySQL:

  • UNHEX() funkce
  • X hexadecimální zápis
  • 0x zápis

Níže jsou uvedeny příklady každé z těchto metod.

Funkce UNHEX()

Toto je řetězcová funkce vytvořená speciálně pro „unhexing“ hexadecimálního řetězce.

Příklad:

SELECT UNHEX('4361747320616E6420646F6773');

Výsledek:

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

Způsob UNHEX() funguje tak, že interpretuje každou dvojici znaků v argumentu jako hexadecimální číslo a převádí je na bajt reprezentovaný číslem. Návratová hodnota je binární řetězec.

Zápis X

Alternativním způsobem, jak z řetězce odstranit hex, je použít X notace.

Příklad:

SELECT X'4361747320616E6420646F6773';

Výsledek:

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

X zápis je založen na standardním SQL. Tento zápis nerozlišuje velká a malá písmena, takže nezáleží na tom, zda použijete velké X nebo malá písmena. To je v kontrastu s 0x zápis, který rozlišuje velká a malá písmena.

Všimněte si, že X zápis vyžaduje sudý počet číslic. Pokud máte lichý počet číslic, můžete jej doplnit úvodní nulou.

Zápis 0x

A třetí způsob, jak unhex řetězec odstranit, je použít 0x notace.

Příklad:

SELECT 0x4361747320616E6420646F6773;

Výsledek:

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

0x zápis je založen na ODBC, pro které se často používají hexadecimální řetězce k zadání hodnot pro sloupce BLOB. Jak již bylo zmíněno, 0x zápis rozlišuje velká a malá písmena, takže nebude fungovat, pokud použijete velké X .

0x zápis sice funguje s lichým počtem číslic, ale pouze proto, že bude interpretovat jakékoli liché číslo jako s úvodní nulou (takže bude sudé).

Zrušte hexadecimální kód čísla

Všimněte si, že HEX() funkce nefunguje na číslech. Chcete-li to provést, použijte CONV() (viz Jak zrušit hex čísla v MySQL).


  1. Zabezpečení záloh MySQL:Průvodce

  2. Mezipaměť:Co to je a jak to ovlivňuje výkon databáze?

  3. Jedinečné omezení, které umožňuje prázdné hodnoty v MySQL

  4. SQL transponuje celou tabulku