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

Microsoft SQL Server中如何用单条SQL匹配261/TEPU.x.x格式的所有SKU变体

解决SQL Server中匹配261/TEPU.x.x格式SKU的问题

我们有一套商品变体的SKU编码系统,通用格式为261/TEPU.x.x,其中x可替换为任意多个字符,示例变体如下:

  • 261/TEPU.A.I
  • 261/TEPU.Z.GS

需求是从dbo.MA_Items表中筛选出所有符合该格式的变体,表中现有记录包括:

  • 261/NOOO.A.I
  • 261/TEPU.A.I
  • 261/TEPU.Z.GS

之前的尝试问题

  • 使用以下语句仅能匹配到261/TEPU.A.I:
SELECT PERCENT Item
FROM dbo.MA_Items
WHERE (Item + ' ' LIKE '261/TEPU.[^*].[^*]')
ORDER BY Item
  • 使用另一条语句仅能匹配到261/TEPU.Z.GS:
SELECT TOP (100) PERCENT Item, Description, IC_InventoryDivision
FROM dbo.MA_Items
WHERE (Item + ' ' LIKE '261/TEPU.[^*].[^*][^*]')
ORDER BY Item
  • 尝试正则风格的LIKE '261/TEPU.[^*]+.[^*]+'在SQL Server中不生效,因为SQL Server的LIKE不支持+表示1次或多次匹配。

可行解决方案

方案1:使用LIKE通配符组合

通过%匹配任意长度字符,同时限定结构为261/TEPU.开头,包含两段由.分隔的内容:

SELECT Item, Description, IC_InventoryDivision
FROM dbo.MA_Items
WHERE Item LIKE '261/TEPU.%._%'
ORDER BY Item

注:%匹配任意长度(包括0)的字符,_匹配单个任意字符,组合后确保两段x都至少有一个字符。

方案2:利用字符串函数验证结构

通过CHARINDEX定位.的位置,确保SKU符合261/TEPU. + 内容 + . + 内容的结构,且没有多余的.:

SELECT Item, Description, IC_InventoryDivision
FROM dbo.MA_Items
WHERE 
    Item LIKE '261/TEPU.%'
    -- 确保在261/TEPU.之后存在第二个.
    AND CHARINDEX('.', Item, LEN('261/TEPU.') + 1) > 0
    -- 确保第二个.之后没有更多的.
    AND CHARINDEX('.', Item, CHARINDEX('.', Item, LEN('261/TEPU.') + 1) + 1) = 0
ORDER BY Item

方案3:使用PATINDEX函数

SQL Server的PATINDEX支持有限的模式匹配,可用于验证结构:

SELECT Item, Description, IC_InventoryDivision
FROM dbo.MA_Items
WHERE PATINDEX('261/TEPU.[^.]%.[^.]%', Item) > 0
ORDER BY Item

解释:[^.]匹配非.字符,%匹配任意长度字符,确保261/TEPU.之后是至少一个非.字符,接着.,再是至少一个非.字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:54:54