В mysql в отличие от Postgres нет массивов и прочих плюшек, вам надо создать процедуру которая по разделителю разделит строку на части и вставит во временную таблицу и вернет результат в виде набора (выборки) тогда этот результат вы можете использовать в where другого запроса
DELIMITER |
CREATE PROCEDURE explode( pDelim VARCHAR(32), pStr TEXT)
BEGIN
DROP TABLE IF EXISTS temp_explode;
CREATE TEMPORARY TABLE temp_explode (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL, word VARCHAR(40));
SET @sql := CONCAT('INSERT INTO temp_explode (word) VALUES (', REPLACE(QUOTE(pStr), pDelim, '\'), (\''), ')');
PREPARE myStmt FROM @sql;
EXECUTE myStmt;
END |
DELIMITER ;
Ну и в каком то запросе делайте так
SET @str = "The quick brown fox jumped over the lazy dog";
SET @delim = " ";
CALL explode(@delim,@str);
Select * from some_table where field in (
SELECT word FROM temp_explode
)
Пример грубый но идею вы должны понять.
Можно доработать чтобы процедура возвращала выборку, поэкспериментировать с переменными в общем если ваш путь через mysql.
А так смотрите в сторону postgres