簡體   English   中英

IN FIND_IN_SET之間的MySQL查詢

[英]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_SETREPLACE結合使用。

例:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM