sql >> Databasteknik >  >> RDS >> Mysql

Hur skickar man en lista med strängar i MySQL lagrad procedur?

Din vän här är FIND_IN_SET förväntar jag mig. Jag stötte först på den metoden i den här frågan:täcks också av den här frågan MYSQL - lagrad procedur som använder kommaseparerad sträng som variabel indata

MySQL-dokumentationen för FIND_IN_SET finns här http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Så din procedur kommer att bli

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

Detta förlitar sig på att kategoristrängen är en kommaavgränsad lista, så din anropskod blir

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

CALL search_equipment('some equipment', type);

(p.s. fixade ett stavfel, i dina argument hade du skrivit categoy)



  1. Om MySQL++, GPL och LGPL

  2. Heroku Postgres:Den här anslutningen har stängts

  3. 3 sätt att upptäcka om en sträng matchar ett reguljärt uttryck i MySQL

  4. Felaktigt strängvärde:'\xE2\x80\xAF(fo...' för kolumn 'beskrivning' på rad 1 Fel:INSERT INTO my_table_name