You can you plainlike
子句
SELECT * FROM product_table WHERE cat like '%Nokia%'
或者使用mysql 正则表达式功能,如果你喜欢
SELECT * FROM product_table WHERE cat REGEXP '.*Nokia.*'
而且,是的,您的数据模型有问题 - 您应该在cat
字段中使用 1 或 2 个以上的表而不是逗号分隔的字符串。
添加:
SELECT * FROM product_table WHERE (cat like '%Nokia,%' or cat like '%,Nokia%')
在 ANSI SQL 中,或
SELECT * FROM product_table WHERE FIND_IN_SET('Nokia',cat)
具有特定于 MySQL 的功能 - 上面给出的所有 4 个查询都像地狱一样无效,并且在不更改数据模型的情况下无法进行优化。
假设您有两个表products(product_id,product_name,...)
,categories(cat_id,cat_word,...)
您可以通过第三个关联表简单地将它们关联起来 product_in_categories(product_id,cat_id)
以及使用新数据模型的有效类别选择查询示例:
SELECT * FROM products p
WHERE exists(select 1 from categories c, product_in_categories pc
where cat_word='Nokia' and c.cat_id=pc.cat_id and pc.product_id=p.product_id)