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

SQL Server中如何匹配H+两位数字且不含H外其他字母的内容?

解决方案:SQL Server 2019 筛选符合规则的Item值

核心需求回顾

需要筛选:

  • 以H开头,后跟至少两位数字
  • 整个字符串中不能包含除H之外的任何大小写字母
    目标匹配结果:H23、H03.1;排除含其他字母的行(如H030BZZ、H03YYZZ等)

可行SQL语句

方案1:纯LIKE运算符实现

利用SQL Server LIKE的字符集排除语法,直接组合条件:

SELECT * 
FROM YourTableName  -- 替换为你的实际表名
WHERE [Item] LIKE 'H[0-9][0-9]%'
  AND [Item] NOT LIKE '%[A-Za-z-[H]]%'

方案2:PATINDEX函数实现

通过PATINDEX检查是否存在非法字母,同时验证开头格式:

SELECT * 
FROM YourTableName  -- 替换为你的实际表名
WHERE PATINDEX('%[A-Za-z-[H]]%', [Item]) = 0
  AND SUBSTRING([Item], 1, 3) LIKE 'H[0-9][0-9]'

语句逻辑说明

  1. 开头格式验证:

    • LIKE 'H[0-9][0-9]%':确保字符串以H+两位数字开头,%允许后续存在任意非字母(如.、数字等)内容
    • SUBSTRING([Item],1,3) LIKE 'H[0-9][0-9]':直接截取前3位验证格式,逻辑和上面一致
  2. 非法字符排除:

    • NOT LIKE '%[A-Za-z-[H]]%':SQL Server支持在字符集中用-[H]排除指定字符,这里表示匹配所有除H之外的大小写字母,用NOT LIKE确保这类字符不存在
    • PATINDEX('%[A-Za-z-[H]]%', [Item]) = 0:PATINDEX返回第一个匹配字符的位置,返回0表示没有找到任何非法字母

为什么你的原有语句失效?

SQL Server的LIKE运算符仅支持基础通配符(%、_、[]、[^]),不支持正则表达式中的量词语法(如{0,3}),这类语法属于标准正则或.NET正则范畴,无法在LIKE中直接使用,因此你的原有语句存在语法错误且逻辑不完整。

测试验证

针对你的测试数据,两个方案都会返回:

idItem
1H23
2H03.1

其余含B、Y、Z、Q的行均会被正确排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:16:33