在Mysql中比较逗号分隔的字符串

时间:2016-05-08 05:43:01

标签: mysql

我需要在存储过程中将字符串与逗号分隔值进行比较。

输入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,因为输入字符串是可变的而不是固定的

1 个答案:

答案 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
相关问题