我的数据库表中有以下数据
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,在相同的查询之间,这可能吗?
如果值集在特定范围内,则可以将FIND_IN_SET
与REPLACE
组合使用,如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。此功能不起作用如果第一个参数包含逗号(",")字符,则正确