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

3 sposoby na „odheksowanie” ciągu w MySQL

MySQL zawiera różne funkcje, które mogą pomóc w pracy z wartościami szesnastkowymi. Jedną z najbardziej oczywistych funkcji jest HEX() funkcja, która umożliwia konwersję ciągu na jego odpowiednik szesnastkowy.

Jednak może się zdarzyć, że chcesz przekonwertować ciąg szesnastkowy z powrotem na bardziej czytelny ciąg. O tym jest ten artykuł.

Oto trzy sposoby na „odszesowanie” ciągu w MySQL:

  • UNHEX() funkcja
  • X notacja szesnastkowa
  • 0x notacja

Poniżej znajdują się przykłady każdej z tych metod.

Funkcja UNHEX()

Jest to funkcja tekstowa stworzona specjalnie do „uwalniania” ciągu szesnastkowego.

Przykład:

SELECT UNHEX('4361747320616E6420646F6773');

Wynik:

+-------------------------------------+
| UNHEX('4361747320616E6420646F6773') |
+-------------------------------------+
| Cats and dogs                       |
+-------------------------------------+

Sposób UNHEX() działa polega na tym, że 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.

Zapis X

Alternatywnym sposobem na unhex ciągu jest użycie X notacja.

Przykład:

SELECT X'4361747320616E6420646F6773';

Wynik:

+-------------------------------+
| X'4361747320616E6420646F6773' |
+-------------------------------+
| Cats and dogs                 |
+-------------------------------+

X notacja oparta jest na standardowym języku SQL. W tej notacji nie jest rozróżniana wielkość liter, więc nie ma znaczenia, czy używasz wielkich liter X lub małymi literami. Jest to w przeciwieństwie do 0x notacja, w której rozróżniana jest wielkość liter.

Zauważ, że X notacja wymaga parzystej liczby cyfr. Jeśli masz nieparzystą liczbę cyfr, możesz uzupełnić ją wiodącym zerem.

Zapis 0x

A trzecim sposobem na unhex łańcucha jest użycie 0x notacja.

Przykład:

SELECT 0x4361747320616E6420646F6773;

Wynik:

+------------------------------+
| 0x4361747320616E6420646F6773 |
+------------------------------+
| Cats and dogs                |
+------------------------------+

0x notacja oparta jest na ODBC, dla którego ciągi szesnastkowe są często używane do dostarczania wartości dla kolumn BLOB. Jak wspomniano, 0x w notacji jest rozróżniana wielkość liter, więc nie zadziała, jeśli użyjesz wielkich liter X .

0x notacja działa z nieparzystą liczbą cyfr, ale tylko dlatego, że zinterpretuje każdą nieparzystą liczbę jako mającą wiodące zero (a tym samym uczyni ją parzystą).

Usuń liczbę szesnastkową

Zauważ, że HEX() funkcja nie działa na liczbach. Aby to zrobić, użyj CONV() zamiast tego funkcji (zobacz Jak rozszyfrować liczbę w MySQL).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jakie jest najlepsze rozwiązanie do puli połączeń bazy danych w Pythonie?

  2. Jak sformatować datę i godzinę w MySQL?

  3. Neo4j - Utwórz związek za pomocą Cypher

  4. W SQL / MySQL, jaka jest różnica między ON i WHERE w instrukcji join?

  5. Jak najlepiej uzyskać czyjąś „ranking” z tabeli wyników za pomocą php i mysql bez zapętlania