You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LIKE查询精准匹配逗号分隔标签中的指定数字?

问题:筛选包含特定独立标签的用户

从返回用户ID、姓名和逗号分隔数字标签的视图中,需要筛选出包含独立标签4的用户,但使用LIKE '%4%'会匹配到包含40、44这类包含数字4的标签,得到无关结果。

视图原始数据

id |  name  |        tags        
----+--------+--------------------
  1 | Albert | 1,2,3,4
  2 | Isaac  | 11,22,33,40,50
  3 | Marie  | 44,110,220,330,500
  4 | Ray    | 111,222,333

错误查询及结果

错误的SQL查询:

select * from users
where tags LIKE '%4%';

返回的错误结果:

id |  name  |        tags        
----+--------+--------------------
  1 | Albert | 1,2,3,4
  2 | Isaac  | 11,22,33,40,50
  3 | Marie  | 44,110,220,330,500

期望结果

id |  name  |        tags        
----+--------+--------------------
  1 | Albert | 1,2,3,4

解决方案

方法1:利用PostgreSQL数组函数处理

将逗号分隔的标签字符串转换为数组,通过数组操作实现精确匹配:

-- 方式1:使用ANY操作符匹配数组元素
SELECT * FROM users
WHERE '4' = ANY(string_to_array(tags, ','));

-- 方式2:使用数组包含操作符
SELECT * FROM users
WHERE string_to_array(tags, ',') @> ARRAY['4'];

方法2:通过字符串边界匹配精确标签

给标签字符串前后拼接逗号,确保匹配的是完整的独立标签:

SELECT * FROM users
WHERE ',' || tags || ',' LIKE '%,4,%';

这种方式会把tags转换为,1,2,3,4,格式,再匹配,4,,避免了部分数字匹配的问题。


内容的提问来源于stack exchange,提问作者Syed Rafay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:15:18