老实说,我不知道我的问题的正确标题,而且我还是关于查询事物的新手。所以我有这样的表名EVENT
id_event name_event category
----------------------------------------------
1 Market Food,Fashion,Art
2 Concert Music
3 FoodTruck Food,Bevarage
我的问题是我想选择category =“ Food,Fashion”的类别。因此所有具有“食物”和“时尚”的类别都将消失,结果是这样的
id_event name_event category
----------------------------------------------
1 Market Food,Fashion,Art
3 FoodTruck Food,Bevarage
也许有人可以帮助我,谢谢大家,祝您愉快!干杯!
最佳答案
这样您就可以实现您想要的:
SELECT
*
FROM event
WHERE category REGEXP CONCAT('(^|,)(', REPLACE("Food,Fashion", ',', '|'), ')(,|$)');
SQL FIDDLE DEMO
注意:
如果要在上面的查询中查看生成的正则表达式:
SELECT CONCAT('(^|,)(', REPLACE("Food,Fashion", ',', '|'), ')(,|$)') AS 'REGEXP';
结果:
(^|,)(Food|Fashion)(,|$)
说明:仅当满足以下任一条件时,才会选择名称为
Food/fashion
且具有category
的记录:food/fashion
前面有逗号或category
以food/fashion
开头或category
以food/fashion
结尾或food/fashion
之后是逗号。建议:
Is storing a delimited list in a database column really that bad?