gpt4 book ai didi

MySQL,Concat int 并保存到变量并使用带有 'IN' 或 'NOT IN' 的变量

转载 作者:行者123 更新时间:2023-11-29 15:31:14 25 4
gpt4 key购买 nike

我想要 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'根据描述的规则转换为整数值5here .
你想要的是功能 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com