Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment passer une liste de chaînes dans une procédure stockée MySQL ?

Votre ami ici est FIND_IN_SET je suppose. J'ai d'abord rencontré cette méthode dans cette question :également couverte dans cette question MYSQL - Procédure stockée utilisant une chaîne séparée par des virgules comme entrée variable

La documentation MySQL pour FIND_IN_SET est ici http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Ainsi, votre procédure deviendra

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `search_equipment`(
    IN equip VARCHAR(100), 
    IN category VARCHAR(255)
)
BEGIN
    SELECT *
    FROM Equipment
    WHERE e_description LIKE CONCAT("%",equip,"%")
    AND FIND_IN_SET(e_type,category)
END

Cela repose sur le fait que la chaîne de catégorie est une liste délimitée par des virgules, et donc votre code d'appel devient

String type = "I.T. Equipment,Office Supply";

CALL search_equipment('some equipment', type);

(p.s. corrigé une faute de frappe, dans vos arguments vous aviez tapé categoy)