[英]Dynamic IN statement with MySQL Stored Procedure
我想在MySQL存储过程中构建动态IN语句 。 我尝试了多种方法,但无法获得有效的方法。 这是我最接近成功的方法,但它仅处理列表中的第一个值: 103 。
我宁愿使用存储的proc而不是在客户端中完全构建此SQL语句然后执行它。 有谁知道在存储过程中动态构建SQL语句的一般规则,尤其是IN语句方面的规则?
call foo2('103,104,105,106');
这是存储的过程:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `foo2`(
szList VARCHAR(256)
)
BEGIN
SELECT
E_Id, EX_Value
FROM
E
WHERE
EX_Value IN (szList);
END
怎样对MySQL使用FIND_IN_SET呢? 我认为此链接可能对您有帮助( 如何将ID列表传递给MySQL存储过程? )
关键是要定义
szList as TEXT
和使用
FIND_IN_SET(Ex_Value, szlist)
代替Ex_Value IN(szlist)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.