[英]MySql query between IN FIND_IN_SET
我的數據庫表中有以下數據
id activity age_criteria
1 act1 18-25,26-39,40-59
2 act2 26-39,40-59
3 act3 40-59,60-79
4 act4 60-79
5 act5 18-25,60-79
現在我們有了搜索過濾器,只有一個文本框可以一次輸入一個值
就像我正在搜索值“ 25”,而不是我希望從上表獲得2條記錄(ID 1,5)。 需要以下結果。
id activity age_criteria
1 act1 18-25,26-39,40-59
5 act5 18-25,60-79
請幫助我以我正在考慮的find_in_set以及以相同的查詢之間的最佳方式來解決此問題嗎?
如果一組值在 18-25
等特定范圍內,則可以將FIND_IN_SET
與REPLACE
結合使用。
例:
select required_fields
from activity_age_relation
where find_in_set( '25', replace( age_criteria, '-', ',' ) ) > 0
請參閱文檔 :
- FIND_IN_SET(str,strlist)
- 如果字符串str在由N個子字符串組成的字符串列表strlist中,則返回1到N范圍內的值。 字符串列表是由用“,”字符分隔的子字符串組成的字符串。 如果第一個參數是常量字符串,第二個參數是SET類型的列,則將FIND_IN_SET()函數優化為使用位算術。 如果str不在strlist中或strlist為空字符串,則返回0。 如果任一參數為NULL,則返回NULL。 如果第一個參數包含逗號(“,”)字符,則此功能無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.