Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie übergebe ich eine Liste von Zeichenfolgen in einer gespeicherten MySQL-Prozedur?

Ihr Freund hier ist FIND_IN_SET, nehme ich an. Ich bin zum ersten Mal auf diese Methode in dieser Frage gestoßen:auch in dieser Frage behandelt MYSQL - Gespeicherte Prozedur, die eine kommagetrennte Zeichenfolge als Variableneingabe verwendet

Die MySQL-Dokumentation für FIND_IN_SET finden Sie hier http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

So wird Ihr Verfahren

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

Dies beruht darauf, dass die Kategoriezeichenfolge eine durch Kommas getrennte Liste ist, und so wird Ihr Aufrufcode zu

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

CALL search_equipment('some equipment', type);

(p.s. Tippfehler korrigiert, in deinen Argumenten hattest du categoy eingegeben)