我在 varchar
字段中有一个逗号分隔值作为字符串。我正在尝试执行基于 like
的 sume,但得到了不期望的结果。
从 myTable WHERE GroupId = 12 中选择 SUM(PostLiked LIKE '%1%') as PostLikedSum
PostLiked | GroupId
_____________________________
1,13,47,87,1 | 12
12,3 | 12
我的查询返回 sum
为 2,因为它匹配 12
。有没有办法限制它,使其与字段内的值 1
匹配?
最佳答案
您可以使用CONCAT
代替OR's
:
SELECT COUNT(CASE WHEN CONCAT(',',t.PostLiked,',') LIKE '%,1,%' THEN 1 end) as PostLiked
FROM myTable t
WHERE t.GroupId = 12
这样 PostLiked
的字符串将被构造为:
,1,13,47,87,1,
,12,3,
那么你就不会遇到这个问题了。
关于php - sql LIKE 有一定的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047090/