相关疑难解决方法(0)

MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

我希望有人能够提供帮助.我已经创建了我的第一个存储过程(没有任何幻想)但是我遇到了一个问题.

我想给它一个字符串输入,如1,2,3,4,5然后它做一个简单的 SELECT * FROM [TABLE] WHERE EAN IN (VAR);

所以存储的proc看起来像这样:

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `moments`.`new_procedure`(IN var1 VARCHAR(255))
BEGIN

SELECT * FROM moments.PRODUCT WHERE EAN IN (var1);

END
Run Code Online (Sandbox Code Playgroud)

我正试图像这样执行它:

作品

call moments.new_procedure('5045318357397')
Run Code Online (Sandbox Code Playgroud)

不起作用

call moments.new_procedure('5045318357397,5045318357427');
Run Code Online (Sandbox Code Playgroud)

这会执行但不会带回任何结果.它是否将第二个语句分类为字符串,所以它这样做:

select * from moments.PRODUCT WHERE EAN IN ('5045318357397,5045318357427')
Run Code Online (Sandbox Code Playgroud)

而不是这个:

select * from moments.PRODUCT WHERE EAN IN ('5045318357397','5045318357427')
Run Code Online (Sandbox Code Playgroud)

如何在执行查询中格式化输入以使其以逗号分隔的字符串作为输入?

mysql stored-procedures

7
推荐指数
1
解决办法
7050
查看次数

字符串到 SQL IN 参数的 Python 列表

我在 python 中有这个查询:

ssim_group = [S1200,S1300]

query = '''select WIPMessageCnt from waferdata where recipename in (%s) and equipment = ?
                             and runtype = ? order by  stopts desc limit 1''' % (','.join(ssim_grp))
Run Code Online (Sandbox Code Playgroud)

打印查询

当前结果

从晶圆数据中选择 WIPMessageCnt,其中配方名称在 (S1200,S1460) 和设备 = ? 和运行类型 = ? 按stopts desc limit 1 排序

预期的结果应该是这样的

从晶圆数据中选择 WIPMessageCnt,其中配方名称在 ('S1200','S1460') 和设备 = ? 和运行类型 = ? 按stopts desc limit 1 排序

当我尝试将它们放在 SQL 的 IN 参数中时,该列表应该在每个元素上具有单个 qoutation。我怎样才能做到这一点?

python mysql list

3
推荐指数
1
解决办法
3749
查看次数

标签 统计

mysql ×2

list ×1

python ×1

stored-procedures ×1