IN FIND_IN_SET之间的MySql查询

时间:2016-04-29 07:29:46

标签: php mysql database

我的数据库表格中有以下数据

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,并且在同一个查询之间有可能吗?

1 个答案:

答案 0 :(得分:0)

如果值在特定范围内,则可以将FIND_IN_SETREPLACE结合使用,如18-25等。

示例:

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。此功能不起作用   如果第一个参数包含逗号(“,”)字符,则正确。
    •   
  •