针对逗号分隔值优化 MySQL 查询
让我们检查一个 SHIRTS
表,其中的 COLORS
字段存储以逗号分隔的数字颜色代码。 简单的 LIKE
查询可能会产生不准确的结果:
<code class="language-sql">SELECT * FROM shirts WHERE colors LIKE '%1%'</code>
此查询返回 colors
字段中任意位置包含“1”的衬衫,包括颜色代码为 1、12 或 15 的衬衫。要仅查找颜色代码为 1 的衬衫,我们需要更精确的方法。
一种有效的技术是在比较之前在 colors
字符串两侧添加逗号:
<code class="language-sql">SELECT * FROM shirts WHERE CONCAT(',', colors, ',') LIKE '%,1,%'</code>
这可确保仅匹配由逗号精确分隔的颜色代码 1。
另一种有效的方法使用 FIND_IN_SET()
函数:
<code class="language-sql">SELECT * FROM shirts WHERE FIND_IN_SET('1', colors) > 0</code>
FIND_IN_SET()
直接检查 colors
字段中逗号分隔列表中是否存在“1”,提供准确的结果。 这种方法因其清晰和高效而受到普遍青睐。
以上是如何高效查询 MySQL 中逗号分隔值字段的精确匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!