繁体   English   中英

SQL和FIND_IN_SET进行过滤

[英]SQL & FIND_IN_SET for filtering

在主页上,我有一个场所列表,您可以根据场所,名称和该场所提供的服务进行过滤。 我有SQL表,其中包含带有提供的服务的数字定义的场所列表:

id | name            | location | services
1  | Establishment 1 | Florida  | 2,5
2  | Establishment 2 | New York | 1,3,5

在主页上,应该通过选中复选框来过滤服务。

我正在寻找SQL查询,该查询将根据所选服务过滤结果 (例如,如果用户选择了服务5,它将显示上表中的两个结果,但是如果用户选择了服务5和1,则仅显示ID为2的服务,如果选择了5和4-无结果)。

我发现FIND_IN_SET可能有效,但是如果用户选择多个服务,则似乎不起作用:

SELECT * FROM table1 t WHERE FIND_IN_SET(?, t.services) > 0

-绑定输入,由POST AJAX发送,作为所选服务的连接,以逗号分隔-例如。 服务=“ 1,3,4”。

您可以尝试REGEXP

检查一下:

SELECT * FROM testtbl t WHERE t.services REGEXP '(^|,)(1|3|4)(,|$)'

您需要以这种形式传递逗号分隔的值=> 1|3|4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM