sql >> Database >  >> RDS >> MariaDB

Hoe HEX() werkt in MariaDB

In MariaDB, HEX() is een ingebouwde tekenreeksfunctie die een hexadecimale tekenreeksrepresentatie van zijn argument teruggeeft.

Het werkt als volgt:

  • Als het argument een getal is, HEX() retourneert een tekenreeksrepresentatie van de hexadecimale waarde van het getal.
  • Als het argument een string is, HEX() retourneert een hexadecimale tekenreeksrepresentatie van de tekenreeks, waarbij elke byte van elk teken in de tekenreeks wordt geconverteerd naar twee hexadecimale cijfers.
  • Vanaf MariaDB 10.5.0, HEX() met een INET6 argument retourneert een hexadecimale representatie van de onderliggende 16-byte binaire string.

Syntaxis

De syntaxis gaat als volgt:

HEX(N_or_S)

Waar N_or_S is een getal of een tekenreeks.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT HEX(15);

Resultaat:

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

Hier hebben we de hexadecimale waarde van 15 , dat is F .

In decimalen zou het tellen als volgt gaan:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

Maar in hexadecimaal gaat het als volgt:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Dus als ons getal tussen 0 en 9 was geweest, zouden we dezelfde waarde hebben gekregen als zijn decimale tegenhanger.

Hier is nog een voorbeeld dat laat zien hoe het hexadecimale systeem zijn waarden verhoogt:

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

Resultaat (met verticale uitvoer):

        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

Snaren

Zoals gezegd, als het argument een string is, HEX() retourneert een hexadecimale tekenreeksrepresentatie van de tekenreeks, waarbij elke byte van elk teken in de tekenreeks wordt geconverteerd naar twee hexadecimale cijfers.

Voorbeeld:

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

Resultaat (met verticale uitvoer):

           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

Vanaf MariaDB 10.5.0, HEX() met een INET6 argument retourneert een hexadecimale representatie van de onderliggende 16-byte binaire string.

Voorbeeld:

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

Resultaat:

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

Hier is het weer, maar in de verkorte vorm van hetzelfde IPv6-adres:

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

Resultaat:

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

Nullargumenten

Doorgeven van null naar HEX() resulteert in null :

SELECT HEX(null);

Resultaat:

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

Geen argumenten doorgeven

Aanroepen van HEX() zonder het doorgeven van argumenten resulteert in een fout:

SELECT HEX();

Resultaat:

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

  1. Back-up/herstel van een gedockte PostgreSQL-database

  2. MyBatis RowBounds beperkt de resultaten van zoekopdrachten niet

  3. Hoe mysqli uitzonderingen te laten maken met behulp van MYSQLI_REPORT_STRICT?

  4. Willekeurige waarde voor kolom DATETIME