作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要 CONCAT 字符串变量中的 ID
列中的值,并在 SQL 中使用带有 IN 的变量,如下所示:
SET @ActID = CONCAT(CAST(5 AS CHAR),',',CAST(15 AS CHAR));
SELECT * FROM `accounts` WHERE `ID` IN (@ActID);
它返回ID
= 5的记录并忽略ID
= 15的记录。
最佳答案
@ActID
是逗号分隔的列表字符串文字,而不是值列表。
所以括号内的列表是 IN
运算符仅包含 1 个值:'5,15'
5
与 '5,15'
进行比较时,结果为 TRUE
15
与 '5,15'
进行比较时,结果为 FALSE
因为'5,15'
根据描述的规则转换为整数值5
here .
你想要的是功能 FIND_IN_SET()
:
SET @ActID = CONCAT(CAST(5 AS CHAR),',',CAST(15 AS CHAR));
SELECT * FROM `accounts` WHERE FIND_IN_SET(`ID`,@ActID) > 0;
更改为 ...= 0
相当于 NOT IN
。
查看简化版demo .
注意:SET @ActID = CONCAT(5,',',15);
工作正常。
关于MySQL,Concat int 并保存到变量并使用带有 'IN' 或 'NOT IN' 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58715557/
我是一名优秀的程序员,十分优秀!