Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak działa funkcja UNHEX() w MySQL

W MySQL funkcja UNHEX() funkcja pozwala na „odheksowanie” napisu w MySQL. Innymi słowy, umożliwia konwersję wartości szesnastkowej na ciąg czytelny dla człowieka.

W szczególności funkcja interpretuje każdą parę znaków w argumencie jako liczbę szesnastkową i konwertuje ją na bajt reprezentowany przez liczbę. Zwracana wartość to ciąg binarny.

Składnia

Składnia wygląda tak:

UNHEX(str)

Gdzie str jest ciągiem do unhex.

Przykład 1 – Podstawowe użycie

Oto podstawowy przykład:

SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Wynik:

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

Podałem więc wartość szesnastkową jako argument, a funkcja rozwinęła tę wartość i zwróciła wynik (który jest ciągiem binarnym).

Przykład 2 – Konwersja ciągu do postaci szesnastkowej

Możemy również zrobić odwrotnie, używając HEX() funkcja do konwersji ciągu na wartość szesnastkową:

SELECT HEX('Coconut palm') AS Hexed;

Wynik:

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

Dlatego moglibyśmy zagnieździć jedną funkcję w drugiej i po prostu otrzymalibyśmy zwrócony argument:

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

Wynik:

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

Przykład 3 – Nieprawidłowe znaki szesnastkowe

Argument musi zawierać prawidłowe znaki szesnastkowe. Jeśli którykolwiek ze znaków nie jest prawidłowym znakiem szesnastkowym, wynikiem będzie NULL :

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

Wynik:

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

Przykład 4 – Argumenty numeryczne

UNHEX() funkcja nie działa na szesnastkowych odpowiednikach wartości liczbowych.

Oto przykład tego, co mam na myśli:

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

Wynik:

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

Innym sposobem zademonstrowania tego byłoby:

SELECT UNHEX(HEX(1234));

Wynik:

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

To pokazuje nam, że szesnastkowy odpowiednik 1234 to 4D2 i UNHEX() funkcja nie może obsłużyć tej wartości.

W takich przypadkach możesz użyć CONV() funkcja zamiast:

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

Wynik:

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

W tym przykładzie używamy CONV() aby przekonwertować wartość z podstawy 16 (szesnastkowej) na podstawę 10 (dziesiętną).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 5 PDOException nie może znaleźć sterownika

  2. Praca z bazami danych MySQL cPanel

  3. Czy mogę przywrócić pojedynczą tabelę z pełnego pliku mysql mysqldump?

  4. Różnice między INDEX, PRIMARY, UNIQUE, FULLTEXT w MySQL?

  5. Jak podłączyć zdalną bazę danych MySQL w PHP