sql >> Database >  >> RDS >> Mysql

Hoe de UNHEX()-functie werkt in MySQL

In MySQL is de UNHEX() Met deze functie kunt u een string "unhexen" in MySQL. Met andere woorden, het stelt je in staat om een ​​hexadecimale waarde om te zetten in een door mensen leesbare string.

In het bijzonder interpreteert de functie elk paar tekens in het argument als een hexadecimaal getal en converteert het naar de byte die door het getal wordt vertegenwoordigd. De geretourneerde waarde is een binaire tekenreeks.

Syntaxis

De syntaxis gaat als volgt:

UNHEX(str)

Waar str is de tekenreeks die u moet unhexen.

Voorbeeld 1 – Basisgebruik

Hier is een eenvoudig voorbeeld:

SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Resultaat:

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

Dus ik heb een hexadecimale waarde als argument gegeven, en de functie heeft die waarde unhexed en het resultaat geretourneerd (wat een binaire tekenreeks is).

Voorbeeld 2 – Converteer een string naar hexadecimaal

We kunnen ook het omgekeerde doen door de HEX() . te gebruiken functie om de string om te zetten in een hexadecimale waarde:

SELECT HEX('Coconut palm') AS Hexed;

Resultaat:

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

Daarom zouden we de ene functie in de andere kunnen nesten, en we zouden gewoon ons argument terugkrijgen:

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

Resultaat:

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

Voorbeeld 3 – Ongeldige hexadecimale tekens

Het argument moet geldige hexadecimale tekens bevatten. Als een van de tekens geen geldige hexadecimale tekens zijn, is het resultaat NULL :

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

Resultaat:

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

Voorbeeld 4 – Numerieke argumenten

De UNHEX() functie werkt niet op de hexadecimale equivalenten van numerieke waarden.

Hier is een voorbeeld van wat ik bedoel:

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

Resultaat:

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

Een andere manier om dit aan te tonen zou zijn:

SELECT UNHEX(HEX(1234));

Resultaat:

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

Dit laat ons zien dat het hexadecimale equivalent van 1234 is 4D2 , en de UNHEX() functie kan die waarde niet aan.

In dergelijke gevallen kunt u de CONV() . gebruiken functie in plaats daarvan:

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

Resultaat:

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

In dit voorbeeld gebruiken we CONV() om de waarde om te rekenen van grondtal-16 (hexadecimaal) naar grondtal-10 (decimaal).


  1. Produceer een `DataSource`-object voor Postgres JDBC, programmatisch

  2. PHP/MySQL rij invoegen en vervolgens 'id' ophalen

  3. Oracle Sequence-waarden zijn niet geordend

  4. Oracle - Kloontabel - Structuur, gegevensbeperkingen en alles