不带引号的 MySQL IN 子句

标签 mysql

我有以下返回 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/

相关文章:

c# - 如何使用 C# 读取列和行?

mysql - MY sql 查询查找 # 状态

php - 问题foreach()提供了无效的参数

mysql - 如何对 "GROUP BY"语句施加条件 - MySQL

php - MySQL - 在任一列中查找对

PHP/JSON 编码

mysql - 这两个字段中哪一个会导致更快的数据库查询?

php - SELECT 多行 WHERE 匹配两个条件

mysql - 如何解决错误的 mysql 用户配置?

php - 使用函数参数在表中插入数据