例如,我有一个名为 TABLE
的表它有一个名为 FIELD
的字段值为 1 和 2。运行此语句
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");
关于mysql - IN() 函数中使用的用户定义 session 变量返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26029916/