[英]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.