2010-08-23 6 views
1

J'ai une table comme:comment interroger un ensemble de données blob

------------------------------ 
Test_Id   Test_data 
(String)   (blob) 
------------------------------ 

Je veux une requête pour récupérer tous les test_id est pour une test_data correspondant.

Pour obtenir quelque chose comme: sélectionnez * from test_table où Test_data = blobObject;

Comment pouvons-nous faire ci-dessus ??

+0

Pouvez-vous parler plus en détail 'blobObject' que vous comparez – Ashay

Répondre

5

Premièrement: il n'y a pas de chaîne sous MySQL. Seulement char/varchar/text.

Eh bien, vous pourriez lancer comme ombles de comparaison comme ceci:

select * from test_table where Test_data = CAST(blobObject AS CHAR); 

ce qui est probablement mieux est de convertir votre chaîne à une chaîne binaire, mais cela pourrait ne pas vous donner la bonne comparaison si vous attendez la comparaison de chaînes comportement ... bien mieux que vous avez un regard sur les fonctions char ici:

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

+0

Comment savez-vous la longueur de la chaîne pour une une langue comme C++? – jww

1

MySQL a des types de données qui peuvent stocker des données binaires. Non seulement char/varchar/text, mais aussi BINARY/VARBINARY/BLOB.

Voir http://dev.mysql.com/doc/refman/5.5/en/blob.html

Et il est l'utilisation est aussi simple que le type de chaîne normale. Mais, s'échapper est nécessaire. et la longueur de la requête est obligatoire car les données binaires peuvent contenir un caractère NULL dans leur contenu.

Avant MySQL 3.23 (je suppose), il n'y avait que mysql_query(), mysql_escape_string(). Ces fonctions n'ont aucune capacité spécifiant la longueur de la requête. après que BLOB a été introduit dans MySQL, mysql_real_query() et mysql_real_escape_string() sont supportés.

J'ai trouvé quelques exemples pour vous. Que ces liens vous aident!

http://zetcode.com/db/mysqlc/ http://bytes.com/topic/c/answers/558973-c-client-load-binary-data-mysql

-1

Vous pouvez utiliser une fonction de hachage telle que MD5

SELECT * FROM example_table WHERE MD5(blob_column) = 'a6a7c0ce5a93f77cf3be0980da5f7da3'; 
Questions connexes