sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan HEX() virker i MariaDB

I MariaDB, HEX() er en indbygget strengfunktion, der returnerer en hexadecimal strengrepræsentation af dets argument.

Det fungerer sådan her:

  • Hvis argumentet er et tal, HEX() returnerer en strengrepræsentation af tallets hexadecimale værdi.
  • Hvis argumentet er en streng, HEX() returnerer en hexadecimal strengrepræsentation af strengen, hvor hver byte af hvert tegn i strengen konverteres til to hexadecimale cifre.
  • Starter i MariaDB 10.5.0, HEX() med en INET6 argument returnerer en hexadecimal repræsentation af den underliggende 16-byte binære streng.

Syntaks

Syntaksen ser sådan ud:

HEX(N_or_S)

Hvor N_or_S er et tal eller en streng.

Eksempel

Her er et grundlæggende eksempel:

SELECT HEX(15);

Resultat:

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

Her fik vi den hexadecimale værdi af 15 , som er F .

I decimal vil optællingen gå sådan her:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

Men i hexadecimal går det sådan her:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Så hvis vores tal havde været mellem 0 og 9, ville vi have fået samme værdi som dets decimalmodstykke.

Her er et andet eksempel, der viser, hvordan det hexadecimale system øger dets værdier:

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

Resultat (ved hjælp af lodret output):

        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

Strenge

Som nævnt, hvis argumentet er en streng, HEX() returnerer en hexadecimal strengrepræsentation af strengen, hvor hver byte af hvert tegn i strengen konverteres til to hexadecimale cifre.

Eksempel:

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

Resultat (ved hjælp af lodret output):

           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

Starter i MariaDB 10.5.0, HEX() med en INET6 argument returnerer en hexadecimal repræsentation af den underliggende 16-byte binære streng.

Eksempel:

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

Resultat:

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

Her er det igen, men ved at bruge den forkortede form af den samme IPv6-adresse:

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

Resultat:

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

Nul-argumenter

Sender null til HEX() resulterer i null :

SELECT HEX(null);

Resultat:

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

Ikke bestået nogen argumenter

Kalder HEX() uden at sende nogen argumenter resulterer det i en fejl:

SELECT HEX();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'

  1. MySQL-fejl 1215:Kan ikke tilføje fremmednøglebegrænsning

  2. SQLcl til at overføre data fra Oracle til PostgreSQL eller YugabyteDB 🅾🐘🚀

  3. Islands T-SQL Challenge

  4. Læs uforpligtet isolationsniveau