我有以下返回 0 个结果的简单 MySQL 查询:
SELECT d.name FROM document d WHERE 10 IN (d.categories)
“类别”是 varchar 类型,包含例如“10,20,30”。
当我直接输入 IN 值时,它起作用并返回结果:
SELECT d.name FROM document d WHERE 10 IN (10,20,30)
我怀疑 MySQL 用这样的东西代替了 d.documents,这当然不是我想要的:
SELECT d.name FROM document d WHERE 10 IN ("10,20,30")
什么是正确的解决方法?
最佳答案
当您提供“10,20,30”形式的值时,它会被视为一个单一的值,而不是您期望的三个不同的值。要将值设为三个不同的值,您需要使用 find_in_set MySQL 中的函数。
此外,我建议您查看此线程:Is storing a delimited list in a database column really that bad?
关于不带引号的 MySQL IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36173831/