sql >> Databasteknik >  >> RDS >> Mysql

3 sätt att "Unhex" en sträng i MySQL

MySQL innehåller olika funktioner som kan hjälpa dig när du arbetar med hexadecimala värden. En av de mest uppenbara funktionerna är HEX() funktion, som gör att du kan konvertera en sträng till dess hexadecimala motsvarighet.

Det kan dock finnas tillfällen då du vill konvertera en hexadecimal sträng tillbaka till en mer läsbar sträng. Det är vad den här artikeln handlar om.

Här är tre sätt att "avhexa" en sträng i MySQL:

  • UNHEX() funktion
  • X hexadecimal notation
  • 0x notation

Nedan finns exempel på var och en av dessa metoder.

UNHEX()-funktionen

Detta är en strängfunktion byggd speciellt för att "avhexa" en hexadecimal sträng.

Exempel:

SELECT UNHEX('4361747320616E6420646F6773');

Resultat:

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

Sättet UNHEX() fungerar är att den tolkar varje teckenpar i argumentet som ett hexadecimalt tal och konverterar det till den byte som representeras av talet. Returvärdet är en binär sträng.

X-notationen

Ett alternativt sätt att ta bort en sträng är att använda X notation.

Exempel:

SELECT X'4361747320616E6420646F6773';

Resultat:

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

X notation är baserad på standard SQL. Den här notationen är skiftlägesokänslig, så det spelar ingen roll om du använder ett versaler X eller gemener. Detta är i motsats till 0x notation, som är skiftlägeskänslig.

Observera att X notation kräver ett jämnt antal siffror. Om du har ett udda antal siffror kan du fylla på det med en inledande nolla.

0x-notationen

Och det tredje sättet att ta bort en sträng är att använda 0x notation.

Exempel:

SELECT 0x4361747320616E6420646F6773;

Resultat:

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

0x notationen baseras på ODBC, för vilken hexadecimala strängar ofta används för att ange värden för BLOB-kolumner. Som nämnts, 0x notationen är skiftlägeskänslig, så det fungerar inte om du använder ett X med versaler .

0x notation fungerar med ett udda antal siffror, men bara för att det kommer att tolka alla udda tal som att de har en inledande nolla (och gör det jämnt).

Ta bort ett nummer

Observera att han HEX() Funktionen fungerar inte på siffror. För att göra det, använd CONV() funktion istället (se Hur man tar bort ett nummer i MySQL).


  1. Skapa en Schema Bound View i SQL Server

  2. PostgreSQL sekvenser utan mellanrum

  3. De vanligaste MySQL-frågorna

  4. Hur får man antalet element i en JSON-array lagrad som CLOB med Oracle 12c?