W MariaDB, HEX()
jest wbudowaną funkcją ciągów znaków, która zwraca szesnastkową reprezentację jej argumentu w postaci ciągu znaków.
Działa to tak:
- Jeśli jej argumentem jest liczba,
HEX()
zwraca ciąg reprezentujący szesnastkową wartość liczby. - Jeśli argument jest ciągiem,
HEX()
zwraca szesnastkową reprezentację ciągu, w której każdy bajt każdego znaku w ciągu jest konwertowany na dwie szesnastkowe cyfry. - Uruchamianie w MariaDB 10.5.0,
HEX()
zINET6
argument zwraca szesnastkową reprezentację podstawowego 16-bajtowego ciągu binarnego.
Składnia
Składnia wygląda tak:
HEX(N_or_S)
Gdzie N_or_S
jest liczbą lub ciągiem.
Przykład
Oto podstawowy przykład:
SELECT HEX(15);
Wynik:
+---------+ | HEX(15) | +---------+ | F | +---------+
Tutaj mamy wartość szesnastkową 15
, czyli F
.
Liczenie w systemie dziesiętnym wyglądałoby tak:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
Ale szesnastkowo wygląda to tak:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Więc gdyby nasza liczba wynosiła od 0 do 9, otrzymalibyśmy taką samą wartość, jak jej dziesiętny odpowiednik.
Oto kolejny przykład, który pokazuje, jak system szesnastkowy zwiększa swoje wartości:
SELECT
HEX(0),
HEX(1),
HEX(2),
HEX(3),
HEX(4),
HEX(5),
HEX(6),
HEX(7),
HEX(8),
HEX(9),
HEX(10),
HEX(11),
HEX(12),
HEX(13),
HEX(14),
HEX(15),
HEX(16),
HEX(17),
HEX(18),
HEX(19),
HEX(20),
HEX(21),
HEX(22),
HEX(23),
HEX(24),
HEX(25),
HEX(26),
HEX(27),
HEX(28),
HEX(29),
HEX(30),
HEX(31),
HEX(32),
HEX(789456768);
Wynik (przy użyciu wyjścia pionowego):
HEX(0): 0 HEX(1): 1 HEX(2): 2 HEX(3): 3 HEX(4): 4 HEX(5): 5 HEX(6): 6 HEX(7): 7 HEX(8): 8 HEX(9): 9 HEX(10): A HEX(11): B HEX(12): C HEX(13): D HEX(14): E HEX(15): F HEX(16): 10 HEX(17): 11 HEX(18): 12 HEX(19): 13 HEX(20): 14 HEX(21): 15 HEX(22): 16 HEX(23): 17 HEX(24): 18 HEX(25): 19 HEX(26): 1A HEX(27): 1B HEX(28): 1C HEX(29): 1D HEX(30): 1E HEX(31): 1F HEX(32): 20 HEX(789456768): 2F0E2780
Struny
Jak wspomniano, jeśli argument jest ciągiem, HEX()
zwraca szesnastkową reprezentację ciągu, w której każdy bajt każdego znaku w ciągu jest konwertowany na dwie cyfry szesnastkowe.
Przykład:
SELECT
HEX('a'),
HEX('aa'),
HEX('A'),
HEX('AA'),
HEX('b'),
HEX('bb'),
HEX('B'),
HEX('BB'),
HEX('Cat'),
HEX('Dog'),
HEX('Paws & Claws'),
HEX('Zebra');
Wynik (przy użyciu wyjścia pionowego):
HEX('a'): 61 HEX('aa'): 6161 HEX('A'): 41 HEX('AA'): 4141 HEX('b'): 62 HEX('bb'): 6262 HEX('B'): 42 HEX('BB'): 4242 HEX('Cat'): 436174 HEX('Dog'): 446F67 HEX('Paws & Claws'): 50617773202620436C617773 HEX('Zebra'): 5A65627261
INET6
Począwszy od MariaDB 10.5.0, HEX()
z INET6
argument zwraca szesnastkową reprezentację podstawowego 16-bajtowego ciągu binarnego.
Przykład:
SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));
Wynik:
+---------------------------------------------------------------+ | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) | +---------------------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------------------+
I znowu, ale używając skróconej formy tego samego adresu IPv6:
SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));
Wynik:
+---------------------------------------------------+ | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) | +---------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------+
Argumenty zerowe
Przekazywanie null
do HEX()
wyniki w null
:
SELECT HEX(null);
Wynik:
+-----------+ | HEX(null) | +-----------+ | NULL | +-----------+
Przekazywanie żadnych argumentów
Wywołanie HEX()
bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT HEX();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'