是否可以找到commma
的{{1}}?
我试过了:
find_in_set
我的用例是:
select find_in_set('\,', '\,');
这里,vfilterList是一个以逗号分隔的列表,作为存储过程的输入提供 - 而r.tag是表中的标记字符串。 (所以我想过滤到只有vfilterList中标记的行)。但是,某些标记字符串中包含逗号。 (在vfilterList中,标签中的逗号会被转义吗?)。
有什么东西告诉我,我做错了吗?
答案 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)