【发布时间】:2011-03-28 10:12:13
【问题描述】:
我使用的系统使用逗号分隔值作为一对多关系。它以 blob 形式存储。
我尝试使用 MySQL IN (LIST),但仅以 uid 在列表中第一个或列表中只有一个的行结束。
mytable
uid categories
1 24,25,26
2 25
3 22,23,25
4 25,27
run sql:
SELECT * FROM mytable WHERE 25 IN (categories)
Result:
uid categories
2 25
4 25,27
Missing (should have been selected but are not)
uid categories
1 24,25,26
3 22,23,25
知道为什么一个字符串必须以 25 开头,而不仅仅是 25 吗?我猜这是字符串问题而不是 IN (LIST) 问题
更新 - 基于以下答案:
在 blob 上使用 th IN (LIST) 时,该 blob 将转换为 int 并且逗号和“数字”会丢失。
改为使用 FIND_IN_SET(needle, haystack),它也适用于包含逗号分隔值的 blob。
【问题讨论】: