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

SQL Server 2019 LIKE模式匹配求助:按规则筛选文件名

适配需求的SQL Server查询语句

需求回顾

需要筛选以3个数字开头,后续依次为:

  • 可选的连字符(-)、下划线(_)或无分隔符
  • 3个数字
  • 可选的连字符(-)、下划线(_)或无分隔符
  • 3个数字
  • 末尾可以是任意内容的字符串

问题分析

你当前的语句存在几个问题:

  • 硬编码了固定数字(如012、325),无法匹配任意3位数字
  • 使用%会匹配中间任意字符,不符合仅允许指定分隔符的要求
  • 结尾固定为000,不满足“后续可为任意内容”的规则

解决方案

方案1:使用REGEXP_LIKE(SQL Server 2019及以上推荐)

SQL Server 2019支持正则表达式匹配,写法更简洁直观:

SELECT * 
FROM [#testingTable] AS [tt] 
WHERE REGEXP_LIKE([tt].[TestingValue], '^[0-9]{3}[-_]?[0-9]{3}[-_]?[0-9]{3}.*')

正则表达式各部分说明:

  • ^:锚定字符串开头
  • [0-9]{3}:匹配任意3位数字
  • [-_]?:匹配0个或1个连字符/下划线(实现“可选分隔符”)
  • .*:匹配任意长度的任意字符(包含0个,即末尾可以无内容)

方案2:使用LIKE组合(兼容旧版本)

如果需要兼容不支持正则的SQL Server版本,可以用LIKE的多条件组合实现:

SELECT * 
FROM [#testingTable] AS [tt] 
WHERE 
    -- 无任何分隔符:连续9位数字开头
    [tt].[TestingValue] LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'
    -- 仅第一个位置有分隔符
    OR [tt].[TestingValue] LIKE '[0-9][0-9][0-9][-_][0-9][0-9][0-9][0-9][0-9][0-9]%'
    -- 仅第二个位置有分隔符
    OR [tt].[TestingValue] LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][-_][0-9][0-9][0-9]%'
    -- 两个位置都有分隔符
    OR [tt].[TestingValue] LIKE '[0-9][0-9][0-9][-_][0-9][0-9][0-9][-_][0-9][0-9][0-9]%'

内容的提问来源于stack exchange,提问作者Chandler R Reeves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:25:58