如何查询blob数据

时间:2010-08-23 10:09:15

标签: mysql database

我有一张表:

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

我想要一个查询来检索匹配的Test_data的所有Test_Id。

实现类似:select * from test_table,其中Test_data = blobObject;

我们怎么办?

3 个答案:

答案 0 :(得分:5)

首先:MySQL中没有字符串这样的东西。只有char / varchar / text。

你可以把它作为char进行比较,如下所示:

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

将字符串转换为二进制字符串可能更好,但是如果你期望字符串比较行为,这可能无法给你正确的比较...最好你在这里查看char函数:

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

答案 1 :(得分: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

答案 2 :(得分:-1)

您可以使用哈希函数,例如MD5

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