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()funkceXhexadecimální zápis0xzá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).