簡體   English   中英

使用MySQL存儲過程的動態IN語句

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM