我有一个客户表,如customer_name和customer_category
客户类别保存如“23 | 24 | 56 | 12 | 45 |” (类别ID)
样本表值
customer_name customer_category
Apple 34 | 23 | 12 |
Orange 24 | 12 | 23 |
柠檬13 | 56 | 89 |
我想过滤类别category_id = 12
所以我的结果会像Apple和Orange
答案 0 :(得分:2)
上面的两个答案(使用LIKE和INSTR)有一个缺点:如果您的类别列表类似于'34 | 23 | 121 | 89',您将搜索'LIKE'%12%“,您仍然会找到121条目。
更好的解决方案可能是:
SELECT customer_name FROM myTable WHERE FIND_IN_SET('12', REPLACE(customer_category, '|', ',')) > 0
答案 1 :(得分:0)
SELECT customer_name FROM myTable WHERE customer_category LIKE'%12%';
答案 2 :(得分:0)
如果您的数据库是
customer_name customer_category
Apple 34|23|12|
Orange 24|12|23|
Lemon 13|56|89|
并过滤类别,例如category_id = 12
所以试试
SELECT customer_name FROM myTable WHERE INSTR(customer_category,'12');