web-dev-qa-db-fra.com

Comment passer une variable à une clause IN?

Disons que j'ai un SP qui a une instruction SELECT comme suit,

SELECT product_id, product_price FROM product 
WHERE product_type IN ('AA','BB','CC');

Mais les données vont à cette clause IN doit passer par une seule variable qui contient la chaîne de valeurs. Lien quelque chose ci-dessous

SELECT product_id, product_price FROM product 
WHERE product_type IN (input_variables);

Mais ça ne fonctionne pas de cette façon. Une idée de comment faire ça?

31
Thanu

Passez la valeur du paramètre comme ceci - 'AA,BB,CC'. Ensuite, il suffit d'utiliser la fonction FIND_IN_SET -

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

créez une fonction définie par l'utilisateur qui convertira la valeur séparée par des virgules en table, et en joignant ces deux, vous obtiendrez le résultat souhaité.

pour plus

4
solaimuruganv

passer une chaîne en utilisant une variable était un problème supposez cette solution

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

Appel de la procédure à partir d'une autre fenêtre de requête

call `spTestListValues`('4,5,3'); --no paramter currently for test

production

ID Description
NUll 
1   TEST1 
4   TEST2
5   TEST3
2
danielad
1
ErikHH