2010-08-23 56 views
1

我有这样一个表:如何查询BLOB数据

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

我想查询检索所有为test_id对匹配的TEST_DATA。

实现类似如下:select * from test_table where Test_data = blobObject;

我们以上怎么办?

+0

你能更多地讨论'您要比较 – Ashay 2010-08-23 10:33:37

回答

5

第一:MySQL中没有这样的字符串。只有char/varchar/text。

嗯,你可以将它转换为字符的比较是这样的:

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

什么可能是更好的是你的字符串转换为二进制字符串,但如果你希望字符串比较,这可能不会给你正确的比较行为...好,把你最好看一下这里的字符功能:

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

+0

blobObject'你怎么知道该字符串的一个长度像C++语言? – jww 2017-02-06 07:17:15

1

MySQL有可存储二进制数据的数据类型。不仅是char/varchar/text,还有BINARY/VARBINARY/BLOB。

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

而且它的使用是正常字符串类型一样简单。但是,转义是必需的。并且必须指定查询长度,因为二进制数据的内容中可能包含NULL字符。

在MySQL 3.23之前(我猜),只有mysql_query(),mysql_escape_string()。这些函数没有指定查询长度的能力。在MySQL中引入BLOB后,支持mysql_real_query()和mysql_real_escape_string()。

我找到了一些例子给你。愿这个链接帮助你!

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

-1

可以使用哈希函数,如MD5

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