[英]How to concat find_in_set results with comma separated string in mysql
[英]how to find a comma with mysql find_in_set
是有可能找到一个commma
与find_in_set
?
我试过了:
select find_in_set('\,', '\,');
我的用例是:
where find_in_set(r.tag, vfilterList)
在这里,vfilterList是一个逗号分隔的列表,作为存储过程的输入提供-r.tag是表中的标记字符串。 (所以我只想过滤到vfilterList中具有标签的行)。 但是,某些标记字符串中包含逗号。 (在vfilterList中,标记中的逗号是否会转义?)。
告诉我我做错了吗?
不,不可能。
该文档特别指出这是行不通的。
如果第一个参数包含逗号(“,”)字符,则此功能无法正常工作。
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set
该函数旨在返回以逗号分隔的子字符串的顺序位置。 根据定义,从本质上讲,它永远不会找到带有逗号的任何内容,因为它仅考虑它们之间的值。
根据您实际要完成的工作, INSTR()
或SUBSTRING_INDEX()
可能会有用。
最终只是用管道替换了逗号。 (并对过滤器列表中的每个标签执行相同的操作)。 对于我们的用例来说,它具有相当准确的误报率是非常不可能的。
where find_in_set(replace(r.tag,",","|"), vfilterList)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.