У меня есть таблица ITEM в MySQL, в которой хранятся данные следующим образом:
ID FEATURES
--------------------
1 AB,CD,EF,XY
2 PQ,AC,A3,B3
3 AB,CDE
4 AB1,BC3
--------------------
В качестве входных данных я получу строку CSV, что-то вроде "AB,PQ". Я хочу получить записи, содержащие AB или PQ. Я понял, что для этого нужно написать функцию MySQL. Итак, если у нас есть эта волшебная функция MATCH_ANY, определенная в MySQL, которая делает это, я бы просто выполнил SQL следующим образом:
select * from ITEM where MATCH_ANY(FEAURES, "AB,PQ") = 0
Приведенный выше запрос вернет записи 1, 2 и 3.
Но я сталкиваюсь со всевозможными проблемами при реализации этой функции, так как понял, что MySQL не поддерживает массивы и нет простого способа разделить строки на основе разделителя.
Модернизация стола — это последний вариант для меня, так как это связано с множеством проблем.
Я также мог бы выполнять запросы, содержащие несколько функций MATCH_ANY, например:
select * from ITEM where MATCH_ANY(FEATURES, "AB,PQ") = 0 and MATCH_ANY(FEATURES, "CDE")
В приведенном выше случае мы получили бы пересечение записей (1, 2, 3) и (3), что было бы всего 3.
Любая помощь приветствуется.
Спасибо