2016-05-08 4 views
1

Мне нужно сравнить строку с значениями, разделенными запятыми, в хранимой процедуре.Сравнение строки, разделенной запятой, в Mysql

вход СЛУЧАЙНЫХ строка = "'aa','ab','ac'"

мне нужно что-то вроде

мне нужен результирующий эффект, подобный приведенному ниже, без использования DYNAMIC SQL.

SELECT * FROM table1 
WHERE table1.field1 LIKE %aa% OR 
table1.field1 LIKE %ab% OR 
table1.field1 LIKE %ac% 

Я не могу использовать FIND_IN_SET как входная строка является переменной, а не фиксированной

ответ

0

Вы можете приблизиться таким образом:

SELECT 
    * 
FROM table1 
WHERE 
    table1.field1 REGEXP 
    REPLACE (REPLACE ("'aa','ab','ac'",'\'',''),',','|'); 

В общем:

SELECT 
    * 
FROM table1 
WHERE 
    table1.field1 REGEXP 
    REPLACE (REPLACE (PUT_YOUR_INPUT_STRING_HERE,'\'',''),',','|') 

Для того, чтобы понять, что там будет, следующий запрос может привести к этому:

SELECT 
REPLACE("'aa','ab','ac'",'\'','') afterFirstReplace, 
REPLACE(REPLACE("'aa','ab','ac'",'\'',''),',','|') afterSecondReplace; 

afterFirstReplace    afterSecondReplace 
aa,ab,ac       aa|ab|ac 
Смежные вопросы