Подтвердить что ты не робот

Как передать переменную в предложение IN?

Допустим, у меня есть 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);

Но он не работает таким образом. Любая идея, как это сделать?

4b9b3361

Ответ 1

Передайте значение параметра так: 'AA,BB,CC'. Тогда достаточно использовать функцию FIND_IN_SET -

SELECT product_id, product_price
FROM product
WHERE FIND_IN_SET(product_type, param);

Ответ 2

создать определенную пользователем функцию, которая преобразует значение, разделенное запятыми, в таблицу, и путем объединения этих двух может получить желаемый результат.

для более

Ответ 3

Передача строки с использованием переменной была проблемой, если принять это решение

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