W MySQL funkcja UNHEX() funkcja pozwala na „odheksowanie” napisu w MySQL. Innymi słowy, umożliwia konwersję wartości szesnastkowej na ciąg czytelny dla człowieka.
W szczególności funkcja interpretuje każdą parę znaków w argumencie jako liczbę szesnastkową i konwertuje ją na bajt reprezentowany przez liczbę. Zwracana wartość to ciąg binarny.
Składnia
Składnia wygląda tak:
UNHEX(str)
Gdzie str jest ciągiem do unhex.
Przykład 1 – Podstawowe użycie
Oto podstawowy przykład:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed; Wynik:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Podałem więc wartość szesnastkową jako argument, a funkcja rozwinęła tę wartość i zwróciła wynik (który jest ciągiem binarnym).
Przykład 2 – Konwersja ciągu do postaci szesnastkowej
Możemy również zrobić odwrotnie, używając HEX() funkcja do konwersji ciągu na wartość szesnastkową:
SELECT HEX('Coconut palm') AS Hexed; Wynik:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Dlatego moglibyśmy zagnieździć jedną funkcję w drugiej i po prostu otrzymalibyśmy zwrócony argument:
SELECT
UNHEX(HEX('Coconut palm')) AS 'Result 1',
HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2'; Wynik:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Przykład 3 – Nieprawidłowe znaki szesnastkowe
Argument musi zawierać prawidłowe znaki szesnastkowe. Jeśli którykolwiek ze znaków nie jest prawidłowym znakiem szesnastkowym, wynikiem będzie NULL :
SELECT
UNHEX(' '),
UNHEX('_xyz'); Wynik:
+------------+---------------+
| UNHEX(' ') | UNHEX('_xyz') |
+------------+---------------+
| NULL | NULL |
+------------+---------------+
Przykład 4 – Argumenty numeryczne
UNHEX() funkcja nie działa na szesnastkowych odpowiednikach wartości liczbowych.
Oto przykład tego, co mam na myśli:
SELECT
HEX(1234),
UNHEX('4D2'); Wynik:
+-----------+--------------+
| HEX(1234) | UNHEX('4D2') |
+-----------+--------------+
| 4D2 | ? |
+-----------+--------------+
Innym sposobem zademonstrowania tego byłoby:
SELECT UNHEX(HEX(1234));
Wynik:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
To pokazuje nam, że szesnastkowy odpowiednik 1234 to 4D2 i UNHEX() funkcja nie może obsłużyć tej wartości.
W takich przypadkach możesz użyć CONV() funkcja zamiast:
SELECT
HEX(1234),
CONV('4D2', 16, 10),
CONV(HEX(1234), 16, 10); Wynik:
+-----------+---------------------+-------------------------+
| HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) |
+-----------+---------------------+-------------------------+
| 4D2 | 1234 | 1234 |
+-----------+---------------------+-------------------------+
W tym przykładzie używamy CONV() aby przekonwertować wartość z podstawy 16 (szesnastkowej) na podstawę 10 (dziesiętną).