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()
funktionX
hexadecimal notation0x
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).