利用MySQL find_in_set() 函数进行多字符串搜索
MySQL 的 find_in_set() 函数一次只能搜索单个字符串。然而,实际应用中常常需要同时搜索多个字符串。
例如:
<code class="language-sql">find_in_set('a', 'a,b,c,d')</code>
这里,'a' 是唯一的搜索字符串。如果要搜索多个字符串,例如 'a,b,c',可以使用以下方法:
<code class="language-sql">find_in_set('a', 'a,b,c,d') OR find_in_set('b', 'a,b,c,d') OR find_in_set('c', 'a,b,c,d')</code>
这种方法使用 OR 运算符组合多个 find_in_set() 调用。但是,存在更有效率的解决方案:
<code class="language-sql">WHERE CONCAT(",", `setcolumn`, ",") REGEXP ",(val1|val2|val3),"</code>
这种方法在 'setcolumn' 字段的开头和结尾添加逗号,以便进行正则表达式模式匹配。其中:
此技巧有效地搜索 'setcolumn' 包含所有指定字符串的行,为多个 find_in_set() 调用的替代方案提供了更灵活和高效的途径。
以上是如何在MySQL中高效地执行多个字符串搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!