sql >> Database teknologi >  >> RDS >> Mysql

Sådan fungerer UNHEX()-funktionen i MySQL

I MySQL er UNHEX() funktionen giver dig mulighed for at "fjerne" en streng i MySQL. Med andre ord giver det dig mulighed for at konvertere en hexadecimal værdi til en menneskelig læsbar streng.

Specifikt fortolker funktionen hvert par af tegn i argumentet som et hexadecimalt tal og konverterer det til den byte, der repræsenteres af tallet. Returværdien er en binær streng.

Syntaks

Syntaksen ser sådan ud:

UNHEX(str)

Hvor str er strengen, der skal unhex.

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel:

SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Resultat:

+--------------+
| Unhexed      |
+--------------+
| Coconut palm |
+--------------+

Så jeg angav en hex-værdi som et argument, og funktionen fjernede denne værdi og returnerede resultatet (som er en binær streng).

Eksempel 2 – Konverter en streng til hexadecimal

Vi kan også gøre det omvendte ved at bruge HEX() funktion til at konvertere strengen til en hexadecimal værdi:

SELECT HEX('Coconut palm') AS Hexed;

Resultat:

+--------------------------+
| Hexed                    |
+--------------------------+
| 436F636F6E75742070616C6D |
+--------------------------+

Derfor kunne vi indlejre den ene funktion i den anden, og vi ville simpelthen få vores argument tilbage:

SELECT 
  UNHEX(HEX('Coconut palm')) AS 'Result 1',
  HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';

Resultat:

+--------------+--------------------------+
| Result 1     | Result 2                 |
+--------------+--------------------------+
| Coconut palm | 436F636F6E75742070616C6D |
+--------------+--------------------------+

Eksempel 3 – Ugyldige hexadecimale tegn

Argumentet skal indeholde gyldige hexadecimale tegn. Hvis nogen af ​​tegnene ikke er gyldige hex-tegn, vil resultatet være NULL :

SELECT 
  UNHEX(' '),
  UNHEX('_xyz');

Resultat:

+------------+---------------+
| UNHEX(' ') | UNHEX('_xyz') |
+------------+---------------+
| NULL       | NULL          |
+------------+---------------+

Eksempel 4 – Numeriske argumenter

UNHEX() Funktionen virker ikke på de hexadecimale ækvivalenter af numeriske værdier.

Her er et eksempel på, hvad jeg mener:

SELECT 
  HEX(1234),
  UNHEX('4D2');

Resultat:

+-----------+--------------+
| HEX(1234) | UNHEX('4D2') |
+-----------+--------------+
| 4D2       | ?            |
+-----------+--------------+

En anden måde at demonstrere dette på ville være:

SELECT UNHEX(HEX(1234));

Resultat:

+------------------+
| UNHEX(HEX(1234)) |
+------------------+
| ?                |
+------------------+

Så hvad dette viser os er, at den hexadecimale ækvivalent af 1234 er 4D2 , og UNHEX() funktion kan ikke håndtere den værdi.

I sådanne tilfælde kan du bruge CONV() funktion i stedet:

SELECT 
  HEX(1234),
  CONV('4D2', 16, 10),
  CONV(HEX(1234), 16, 10);

Resultat:

+-----------+---------------------+-------------------------+
| HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) |
+-----------+---------------------+-------------------------+
| 4D2       | 1234                | 1234                    |
+-----------+---------------------+-------------------------+

I dette eksempel bruger vi CONV() for at konvertere værdien fra base-16 (hexadecimal) til base-10 (decimal).


  1. postgresql:datatype for md5-meddelelsessammendrag?

  2. Konverter datoformat til DD/MMM/ÅÅÅÅ-format i SQL Server

  3. Søg tekst i lagret procedure i SQL Server

  4. Cloud Backup-indstillinger for PostgreSQL