2010-08-23 69 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';