sql >> Databáze >  >> RDS >> Mysql

Jak předat seznam řetězců v uložené proceduře MySQL?

Váš přítel zde je FIND_IN_SET očekávám. Poprvé jsem narazil na tuto metodu v této otázce:také zahrnutá v této otázce MYSQL – Uložená procedura využívající jako variabilní vstup řetězec oddělený čárkami

Dokumentace MySQL pro FIND_IN_SET je zde http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Váš postup se tedy stane

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

To závisí na tom, že řetězec kategorie je seznamem odděleným čárkami, a tak se váš volací kód stane

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

CALL search_equipment('some equipment', type);

(p.s. opravena chyba, v argumentech jste zadali categoy)



  1. Formátování čísel s čárkami v PostgreSQL

  2. PostgreSQL/JDBC a TIMESTAMP vs. TIMESTAMPTZ

  3. Ekvivalent LISTAGG s klauzulí okénka

  4. SQL SELECT přeskočit prvních N výsledků?