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

如何在SQL Server中使用REPLACE函数替换指定区间的可变长度文本

实现方案

你可以通过定位LL的位置、拆分字符串后清除前导零再拼接的方式实现需求,用到的CHARINDEX、PATINDEX、SUBSTRING、LEN均为SQL通用函数,兼容SQL Server所有主流版本:

SELECT 
    -- 取LL之前的部分
    SUBSTRING(ProductID, 1, CHARINDEX('LL', ProductID) - 1) 
    + '/' 
    -- 取LL之后的部分,截掉所有前导零后拼接
    + SUBSTRING(
        SUBSTRING(ProductID, CHARINDEX('LL', ProductID) + 2, LEN(ProductID)),
        PATINDEX('%[^0]%', SUBSTRING(ProductID, CHARINDEX('LL', ProductID) + 2, LEN(ProductID))),
        LEN(ProductID)
    ) AS [Product Code]
FROM Product

逻辑说明

  • 用CHARINDEX('LL', ProductID)获取LL首次出现的位置,截取该位置之前的字符串作为前缀
  • 截取LL之后的所有字符,用PATINDEX('%[^0]%', 字符串)匹配第一个非零字符的位置
  • 前缀 + / + 第一个非零字符开始的后缀,拼接得到最终结果

测试效果

对应你给出的三条测试数据,执行后返回结果如下:

Product Code
PID/74853
PID/86752
PID/84276

如果需要保留LL之后除了前导零之外的零(比如第三条数据原替换结果为PID/084276),只需要调整匹配非零字符的规则即可,当前方案完全匹配你提出的「将LL及其后续的所有零替换为一个/」的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:07