MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie HEX() in MariaDB funktioniert

In MariaDB HEX() ist eine eingebaute Zeichenfolgenfunktion, die eine hexadezimale Zeichenfolgendarstellung ihres Arguments zurückgibt.

So funktioniert es:

  • Wenn sein Argument eine Zahl ist, HEX() gibt eine Zeichenfolgendarstellung des Hexadezimalwerts der Zahl zurück.
  • Wenn das Argument ein String ist, HEX() gibt eine hexadezimale Zeichenfolgendarstellung der Zeichenfolge zurück, wobei jedes Byte jedes Zeichens in der Zeichenfolge in zwei Hexadezimalziffern umgewandelt wird.
  • Ab MariaDB 10.5.0, HEX() mit einem INET6 Das Argument gibt eine hexadezimale Darstellung der zugrunde liegenden 16-Byte-Binärzeichenfolge zurück.

Syntax

Die Syntax lautet wie folgt:

HEX(N_or_S) 

Wobei N_or_S ist eine Zahl oder ein String.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT HEX(15); 

Ergebnis:

+---------+| HEX(15) |+---------+| F |+---------+

Hier haben wir den hexadezimalen Wert von 15 , was F ist .

Dezimal würde die Zählung so aussehen:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

Aber hexadezimal sieht es so aus:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Wenn unsere Zahl also zwischen 0 und 9 gewesen wäre, hätten wir den gleichen Wert wie ihr dezimales Gegenstück bekommen.

Hier ist ein weiteres Beispiel, das zeigt, wie das Hexadezimalsystem seine Werte erhöht:

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); 

Ergebnis (bei vertikaler Ausgabe):

 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):20HEX(789456768):2F0E2780

Strings

Wie bereits erwähnt, wenn das Argument ein String ist, HEX() gibt eine hexadezimale Zeichenfolgendarstellung der Zeichenfolge zurück, wobei jedes Byte jedes Zeichens in der Zeichenfolge in zwei hexadezimale Ziffern umgewandelt wird.

Beispiel:

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'); 

Ergebnis (bei vertikaler Ausgabe):

 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('Hund'):446F67HEX('Paws &Claws'):50617773202620436C617773 HEX('Zebra'):5A65627261 

INET6

Ab MariaDB 10.5.0, HEX() mit einem INET6 Das Argument gibt eine hexadezimale Darstellung der zugrunde liegenden 16-Byte-Binärzeichenfolge zurück.

Beispiel:

SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)); 

Ergebnis:

+---------------------------------------------- ------------------+| HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) |+---------------------- -----------------------------------+| 20010DB83C4D0015000000001A2F1A2B |+---------------------------------------------- ----------------+

Hier ist es noch einmal, aber mit der abgekürzten Form derselben IPv6-Adresse:

SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)); 

Ergebnis:

+---------------------------------------------- -----+| HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) |+--------------------- -------------------------+| 20010DB83C4D0015000000001A2F1A2B |+---------------------------------------------- ----+

Null-Argumente

Übergabe von null zu HEX() ergibt null :

SELECT HEX(null); 

Ergebnis:

+-----------+| HEX(null) |+-----------+| NULL |+-----------+

Keine Argumente übergeben

Aufruf von HEX() ohne Argumente zu übergeben führt zu einem Fehler:

SELECT HEX(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „HEX“