如何用mysql find_in_set找到一个逗号

时间:2016-03-02 22:35:49

标签: mysql

是否可以找到commma的{​​{1}}?

我试过了:

find_in_set

我的用例是:

select find_in_set('\,', '\,');

这里,vfilterList是一个以逗号分隔的列表,作为存储过程的输入提供 - 而r.tag是表中的标记字符串。 (所以我想过滤到只有vfilterList中标记的行)。但是,某些标记字符串中包含逗号。 (在vfilterList中,标签中的逗号会被转义吗?)。

有什么东西告诉我,我做错了吗?

2 个答案:

答案 0 :(得分:2)

不,这是不可能的。

文档特别指出这不起作用。

  

如果第一个参数包含逗号(“,”)字符,则此函数无法正常工作。

     

http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set

该函数旨在返回由逗号分隔的子字符串的序号位置。根据定义,从本质上讲,它永远不会找到任何包含逗号的内容,因为它只考虑它们之间的值。

根据您实际尝试完成的内容,INSTR()SUBSTRING_INDEX()可能会有用。

答案 1 :(得分:0)

结束用管道替换逗号。 (并对过滤器列表中的每个标记执行相同操作)。对于我们的用例来说,误报的准确性非常准确。

where find_in_set(replace(r.tag,",","|"), vfilterList)