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

Oracle数据库中如何查找包含指定逗号分隔数值组合的行数据

错误原因

你原有写法中的正则表达式包含无意义的右方括号,且没有做边界匹配,会出现两种问题:一是匹配不到符合要求的目标值,二是可能误匹配到包含153,54、53,542这类前缀/后缀多余数字的内容。


正确实现方案

方案1:REGEXP_LIKE 正则匹配(适配Oracle、MySQL 8.0+、PostgreSQL等支持该函数的数据库)

-- 需求1:查找包含 53,54 的行
WHERE REGEXP_LIKE(DIST_GRP, '(^|,)53,54(,|$)')

-- 需求2:查找包含 50,52,53 的行
WHERE REGEXP_LIKE(DIST_GRP, '(^|,)50,52,53(,|$)')

正则逻辑说明:

  • (^|,) 匹配字符串开头或逗号,确保目标数字串的前半段没有其他多余数字
  • 中间为你需要匹配的连续数字序列
  • (,|$) 匹配逗号或字符串结尾,确保目标数字串的后半段没有其他多余数字

方案2:LIKE 写法(适配所有支持字符串拼接的数据库,兼容性更好)

通过给原字段前后拼接逗号,消除边界匹配问题:

-- 需求1:查找包含 53,54 的行
WHERE CONCAT(',', DIST_GRP, ',') LIKE '%,53,54,%'

-- 需求2:查找包含 50,52,53 的行
WHERE CONCAT(',', DIST_GRP, ',') LIKE '%,50,52,53,%'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:36:04