2016-08-12 30 views
0

我沒有找到解決我的問題的解決方案。在由「,」分隔的文本列中搜索MySQL中的倍數字符串

這裏有一個例子:

一個有一個表,例如:Person。它有一個包含以「,」分隔的大量數字的列。這些數字代表了一些事物,但現在它並不相關。

Person

nm_name: Jonas 
nm_email: [email protected] 
ds_numbers: 1,2,3,5,17,27,67,77, 

我想打一個查詢,通過此列ds_numbers過濾表人searchs。但用戶將通過過濾器選擇女巫號碼,例如,如果用戶至少選擇了該列中的1個號碼,則寄存器將會出現。

例如,如果我選擇「3」,該寄存器將會出現,或者「3,55,12」也會出現,因爲至少需要一個值爲字符串。

問題它,我不能使用像'%4%'因爲我會返回4,41,74 ...任何不同的解決方案?

重要事項:我在Java中安裝此查詢,因此我可以使用Java功能,如循環,但我沒有找到解決方案。有任何想法嗎?

而我正在使用MySQL。

+0

可能重複的[你可以拆分/爆炸MySQL查詢中的字段?](http://stackoverflow.com/questions/471914/can-you-split-explode-a-field-in-a-mysql - 查詢) – Jasha

回答

0

您可以像使用,但與目前的格式,你會得到誤報。 '%4%'也將匹配數字40或14.

理想情況下,更改您的數據以使用分隔符存儲數字。 「| 3 |,| 55 |,| 32 |」。 然後當您選擇使用LIKE'%| 3 |%'時,它只會匹配| 3 |。

您可以使用LIKE'%3,%',但如果3是字符串中最後一個數字,則不匹配最後一個數字。

+0

我想過,要使用'%',它確實無法工作。但我喜歡你的解決方案使用「|」。當然會有效,但已經有一個巨大的基地已經人口稠密,這是不可行的。但感謝分享! –

+1

你的領域在最後有一個尾隨逗號? (在你的例子中,你有一個,但它可能只是一個片段。)如果不是,你可以添加一個尾隨逗號到字段?如果是這樣,那麼你可以使用LIKE'%,3,%'或LIKE'%,343,%' – SilicaGel

+0

謝謝,很好的解決方案! –

0

你可以通過LIKE運算符使用通配符進行簡單的文本搜索。

SELECT ds_numbers FROM table WHERE ds_numbers LIKE '%3%' 

如果沒有,那麼你可以嘗試在回答中提到了這個問題的全文搜索功能:Search for string within text column in MySQL

+0

謝謝。我要讀。 –

相關問題