簡體   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