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
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.
Ecco un ottimo post sul blog a cui mi riferisco sempre per ricordarmi della corretta gestione dei valori esadecimali e dei campi binari e presenta alcune implicazioni sulle prestazioni.
http://www.xaprb.com/blog/2009/02/12/5-ways-to-make-hexadecimal-identifiers-perform-better-on-mysql/
Oppure si può fare anche questo:
INSERT INTO tbl (col) VALUES (X'4D2AFF')
Vedi this per qualche informazione in più.
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
Funziona come un fascino. Grazie. – Tim
Prego. – BalusC