我希望有人能够提供帮助.我已经创建了我的第一个存储过程(没有任何幻想)但是我遇到了一个问题.
我想给它一个字符串输入,如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)
如何在执行查询中格式化输入以使其以逗号分隔的字符串作为输入?
我在 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。我怎样才能做到这一点?