Контакты
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Наибольший вклад в теги

Все теги (8)

Лучшие ответы пользователя

Все ответы (3)
  • Как передать значения?

    pvsaintpe
    @pvsaintpe
    Senior PHP Developer
    В 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
    Ответ написан
    Комментировать