Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przekazać listę ciągów w procedurze składowanej MySQL?

Twój przyjaciel to FIND_IN_SET. Po raz pierwszy natknąłem się na tę metodę w tym pytaniu:również omówione w tym pytaniu MYSQL — procedura składowana wykorzystująca ciąg znaków oddzielonych przecinkami jako zmienne wejściowe

Dokumentacja MySQL dla FIND_IN_SET jest tutaj http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Twoja procedura stanie się

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

Polega to na tym, że ciąg kategorii jest listą oddzieloną przecinkami, więc kod wywołujący staje się

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

CALL search_equipment('some equipment', type);

(ps. poprawiłem literówkę, w swoich argumentach wpisałeś kategorię)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql konwertuje datę na tę samą datę bieżącego roku

  2. Błąd instalacji mysql-python:nie można otworzyć pliku dołączanego „config-win.h”

  3. Jak w MySQL zbudować indeks, aby przyspieszyć to zapytanie?

  4. Jak wybrać jedną z dwóch tabel w MySQL, nawet jeśli nie wszystkie wiersze w jednej tabeli mają korespondentów w drugiej?

  5. Czy instrukcja merge jest dostępna w MySQL?