如何在mysql查询中检查值是否存在

时间:2014-04-10 07:14:34

标签: mysql

我有一个客户表,如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

3 个答案:

答案 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');