gpt4 book ai didi

MySQL 存储过程的字符串问题。原始输出看起来不错,但在查询中返回空集

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

MySQL 遇到一些问题。

具体来说,我编写了一个存储过程来接受一些输入,其中一个是逗号分隔的列表,用于动态查询。

例如:

SET @var1 = 10;
SET @var2 = 'banana';
SET @var3 = "\'Thing1\', \'Thing2\'";
CALL my_stored_proc(@var1, @var2, @var3);

存储过程代码本身查看传入的列表(在本例中为 @var3),并检查成员资格。程序看起来像这样:

SELECT item, some_stuff FROM table
WHERE item IN (variable3)
GROUP BY item;

现在,我查看了 @var3,原始输出似乎没问题。当我直接复制并粘贴文本,替换“IN(variable3)”语句中的variable3时,查询按预期工作!

尝试直接将双引号单引号转义位(请参阅@var3)传递给 CALL,但仍然没有成功。

任何帮助将不胜感激。

最佳答案

准确显示您如何调用该过程?但无论如何,这是一个错误的做法。相反,您应该使用临时表 -> 填充这些数据 -> 在 IN 子句中使用该临时表

CREATE TEMPORARY TABLE dumb (things varchar(20));

insert into dumb
select 'Thing1'
union
select 'Thing2'

在程序中使用该临时表

SELECT item, some_stuff FROM table
WHERE item IN (SELECT distinct things from dumb)
GROUP BY item;

关于MySQL 存储过程的字符串问题。原始输出看起来不错,但在查询中返回空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735251/

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