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

SQL如何在字符串字段中精确匹配独立存在的指定数值

解决方案

方法1:通用LIKE实现(兼容所有SQL数据库)

核心思路是给目标字段前后补空格,把「开头/结尾的293」统一转换为「前后带空格的293」,再统一匹配:

SELECT * FROM LeadTimeNodes 
WHERE CONCAT(' ', ParentCombination, ' ') LIKE '% 293 %';
  • 适配说明:如果使用的是不支持CONCAT函数的老版本SQL Server,可替换为' ' + ParentCombination + ' '。

匹配验证

该写法完全符合你给出的所有规则:

  • '3293 >>> 671':补空格后为' 3293 >>> 671 ',无单独的293片段,不匹配
  • '293':补空格后为' 293 ',匹配成功
  • '479 >>> 12930':补空格后无单独的293片段,不匹配
  • '6000 >>> 293':补空格后为' 6000 >>> 293 ',匹配成功
  • '293 >>> 1600':补空格后为' 293 >>> 1600 ',匹配成功

方法2:正则实现(支持正则的数据库适用)

如果你的数据库支持正则匹配,写法更精简,也可适配更多分隔符场景:

MySQL/MariaDB 示例

SELECT * FROM LeadTimeNodes 
WHERE ParentCombination REGEXP '(^| )293( |$)';

PostgreSQL 示例

SELECT * FROM LeadTimeNodes 
WHERE ParentCombination ~ '(^|\s)293(\s|$)';

SQL Server 示例

SELECT * FROM LeadTimeNodes 
WHERE PATINDEX('%[^0-9]293[^0-9]%', ' ' + ParentCombination + ' ') > 0;
  • 正则逻辑说明:(^| )匹配字符串开头或前置空格,( |$)匹配后置空格或字符串结尾,确保293是独立存在的数值,不会匹配到其他长数字的片段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:15:03