mysql - IN() 函数中使用的用户定义 session 变量返回意外结果

标签 mysql sql mysql5

例如,我有一个名为 TABLE 的表它有一个名为 FIELD 的字段值为 12。运行此语句

SELECT GROUP_CONCAT(`FIELD`)  
INTO @LIST 
FROM `TABLE`;

SELECT @LIST;

返回

1,2

然后我执行一个 IF() 语句

SELECT IF (1 IN(@LIST),"TRUE","FALSE");

返回

TRUE

但是当我运行这个时

SELECT IF (2 IN(@LIST),"TRUE","FALSE");

返回

FALSE

所以我尝试这个语句进行一些调试

SELECT IF (2 IN(1,2),"TRUE","FALSE");

它返回我的期望值

TRUE

所以我错过了什么吗?我需要它返回TRUE

最佳答案

变量@LIST有一个字符串类型值:'1,2'。要测试此值列表中的值,您必须使用字符串函数:FIND_IN_SET :

SELECT IF (FIND_IN_SET(1, @LIST), "TRUE","FALSE");
SELECT IF (FIND_IN_SET(2, @LIST), "TRUE","FALSE");

在这里测试:http://sqlfiddle.com/#!2/4fce1d/1

关于mysql - IN() 函数中使用的用户定义 session 变量返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26029916/

相关文章:

mysql - 使用另一个表的记录规范化 MySQL 表

sql - 在 T-SQL 查询的 SELECT 子句中使用比较运算符

mysql - 选择不存在相关记录的行

sql - 日期列作为主键一部分的优缺点

mysql - mysql5如何删除父表的数据?

mysql - 我们可以在 Windows 中通过命令提示符运行 mysql 查询吗?

mysql - 这是 MongoDB 用例吗?

php - 我只能在数据库中存储数字,一个简单的 php shoutbox

mysql - 在 mysql sproc 中使用表名的变量

mysql - 将数据库初始数据下载到 iOS 应用程序的最佳方式是什么?