sql : MàJ un champ BLOB en hexadécimal
Par RaphAstronome le jeudi, 19 février 2009, 20:45 - Programmation - Lien permanent
Il est souvent utile d'intégrer des données binaires à une base de données. Pour le faire on utilise les champs de type BLOB et souvent on insère les données avec leur représentation hexadécimale. Pour modifier ce champ on aurait tendance a faire :
UPDATE t SET champ=0x0123456789abcdef WHERE id=1;
En bah ça marche pas ! Du moins pas avec MySQL. Le problème est qu'il interprète 0x0123456789abcdef comme un nom de champ (erreur #1064) il faut donc passer par une autre méthode.
On peut essayer ça :
UPDATE t SET champ=x'0123456789abcdef' WHERE id=1;
Ça marche lorsque la chaine est courte mais si elle est longue c'est pas mieux !
Avec UNHEX :
UPDATE t SET champ=UNHEX('0123456789abcdef') WHERE id=1;
Ça marche même si la chaîne est longue (testé 586,5 Kio dans un longblob) !
Commentaires