繁体   English   中英

如何用mysql查找逗号find_in_set

[英]how to find a comma with mysql find_in_set

是有可能找到一个commmafind_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM