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()zINET6argument 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'