我需要在存储过程中将字符串与逗号分隔值进行比较。
输入RANDOM字符串= "'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 :(得分: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