sql >> Database teknologi >  >> RDS >> Mysql

Hvordan sendes en liste over strenge i MySQL Stored Procedure?

Din ven her er FIND_IN_SET, forventer jeg. Jeg stødte først på den metode i dette spørgsmål:også dækket i dette spørgsmål MYSQL - Lagret procedure, der bruger kommasepareret streng som variabel input

MySQL-dokumentation til FIND_IN_SET er her http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Så din procedure bliver

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

Dette afhænger af, at kategoristrengen er en kommasepareret liste, og din opkaldskode bliver derfor

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

CALL search_equipment('some equipment', type);

(p.s. rettet en tastefejl, i dine argumenter havde du skrevet kategori)



  1. Flere indsæt sætninger i enkelt ODBC ExecuteNonQuery (C#)

  2. vis databaseværdi i modal frame viser kun første post

  3. Laravel rækkefølge af middleware (Middleware Priority). Multi-lejer bruger Postgres

  4. Hvordan gør du det muligt for kunder at bruge deres openid på din hjemmeside, ligesom stackoverflow?