假设我有一个SP,其SELECT
语句如下,
SELECT product_id, product_price FROM product
WHERE product_type IN ('AA','BB','CC');
但是数据要求IN
子句必须通过包含值字符串的单个变量。下面的东西链接
SELECT product_id, product_price FROM product
WHERE product_type IN (input_variables);
但它没有那样工作。知道怎么做吗?
答案 0 :(得分:45)
像这样传递参数值 - 'AA,BB,CC'
。然后,使用FIND_IN_SET函数 -
SELECT product_id, product_price
FROM product
WHERE FIND_IN_SET(product_type, param);
答案 1 :(得分:4)
创建一个用户定义的函数,将逗号分隔值转换为表格,通过连接,这两个函数可以获得所需的结果。
答案 2 :(得分:2)
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spTestListValues`(_list varchar(200))
BEGIN
SET @LIST=_list; -- assume this a paramter from the stored procedure
SELECT NULL AS Id, '' AS Description --insert null value to be used for list box population
UNION
(SELECT id, Description
FROM test_table
WHERE FIND_IN_SET(id,@LIST) ORDER BY Description ASC) ;
END
call `spTestListValues`('4,5,3'); --no paramter currently for test
ID Description
NUll
1 TEST1
4 TEST2
5 TEST3
答案 3 :(得分:1)