2013-05-20 116 views
1

我正面臨着MySQL,UNCOMPRESS函數的問題。MySQL解壓縮問題

我有表名爲useruser_details商店COMPRESS值。在這種情況下,在從user_details搜索值之前,我必須UNCOMPRESS它。

但問題是我做UNCOMPRESS後,搜索成爲情況下,sensetive

如..如

如果我嘗試下面的SQL,它只會搜索包含CAPITAL測試字忽略小的情況下測試字

SELECT * FORM用戶WHERE值UNCOMPRESS(user_details)LIKE'%TESTING%'。

我希望區分大小寫的搜索。

回答

3

但是問題出在我做UNCOMPRESS之後,搜索變得很有規律。

這是because COMPRESS()「壓縮字符串,並返回結果作爲二進制字符串。」(重點煤礦)

當您在一個二進制字符串進行LIKE操作,binary comparison將執行(這是區分大小寫的)。

您或許可以通過在COMPRESS()聲明周圍添加CAST()來避開此情況。

但是,你可能不應該這樣做,擺在首位。這是一種極其低效的方式來搜索大量的數據。 MySQL將不得不爲每個行解壓縮,並且沒有機會使用任何內部優化方法(如索引)。

首先不要使用COMPRESS()

+0

謝謝... CAST()工作 –

+0

@Poonam歡迎您,但請記住,這真的是非常低效。我將擺脫COMPRESS() –

2

試試這個:

SELECT * FROM `user` WHERE LOWER(UNCOMPRESS(user_details)) LIKE '%testing%' 

但作爲佩卡也指出或它的效率非常低。如果您使用MyIsam Engine的另一種替代方法是myisampack,它會壓縮孔表及其仍然可以查詢。

+0

它不起作用 –

+0

這是查詢「FORM」 - >「FROM」中的拼寫錯誤嘗試現在請pls – Stephan