Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да предам списък от низове в съхранена процедура на MySQL?

Вашият приятел тук е FIND_IN_SET, очаквам. За първи път попаднах на този метод в този въпрос:също разгледан в този въпрос MYSQL - Съхранена процедура, използваща низ, разделен със запетая, като входна променлива

MySQL документация за FIND_IN_SET е тук http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Така вашата процедура ще стане

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

Това разчита на това, че низът на категорията е списък, разделен със запетая, и така вашият код за повикване става

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

CALL search_equipment('some equipment', type);

(p.s. поправена е правописна грешка, във вашите аргументи сте въвели categoy)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намиране на разликата между последния и втория последен член

  2. mysql и индекси с повече от една колона

  3. Конкатенация на низове в MySQL

  4. mysql рекурсивна(дърво) родителска дъщерна категория

  5. Грешка се появява в sql при опит за добавяне на няколко външни ключа