2010-06-27 4 views
17

Ho una tabella con una colonna VARBINARY. Ho bisogno di inserire una stringa come "4D2AFF" che rappresenta rispettivamente i valori esadecimali 0x4D, 0x2A e 0xFF. Come posso costruire questa affermazione?Inserire valori esadecimali in MySql

risposta

26

È possibile utilizzare la funzione UNHEX() per convertire una stringa esagonale con coppie esadecimali in binario e HEX() per fare il contrario.

I.e.

INSERT INTO tbl (col) VALUES (UNHEX('4D2AFF')) 

e

SELECT HEX(col) FROM tbl 
+0

Funziona come un fascino. Grazie. – Tim

+0

Prego. – BalusC

2

The Hex() e Unhex() funzioni sono state già menzionate, ma mi piacerebbe pesare come bene su un modello alternativo.

Come stai utilizzando le stringhe prima e dopo? Se puoi evitare la cover fino all'ultimo minuto possibile, questo è altamente preferenziale. In questo modo non rischi che qualcosa vada storto, o dimentichi se l'oggetto che hai estratto dal DB è già stato convertito o meno.

4

Oppure si può fare anche questo:

INSERT INTO tbl (col) VALUES (X'4D2AFF') 

Vedi this per qualche informazione in più.

+1

Si noti che anche in MySQL 5.6, la notazione X '' ha un limite di lunghezza nel client mysql di riferimento e UNHEX() non (appare). Non so quale sia il limite per X '', in quanto non è documentato ufficialmente, ma l'ho incontrato quando ho provato ad INSERIRE un BLOB. Con il client letterale X ', mysql ha lanciato un errore di sintassi con una sequenza esadecimale sufficientemente lunga mentre UNHEX() della stessa sequenza non lo faceva. – cowbert