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

SQL Server中修改varchar列:将特定前缀的11位字符调整为10位

解决方案

可以通过SQL的字符串函数结合条件判断实现需求,以下提供两种简洁的实现方式:

方法一:使用CASE+字符串截取

SELECT 
    CASE 
        WHEN LEFT(SomeCol, 4) = '0169' THEN '039' + RIGHT(SomeCol, 7)
        ELSE SomeCol
    END AS SomeCol
FROM @Table;

逻辑说明

  • LEFT(SomeCol, 4):提取列值前4位,判断是否匹配目标前缀'0169'
  • 匹配时,用'039'拼接原列值的后7位(11-4=7),将11位字符串转为10位
  • 不匹配的列值直接保留原样

方法二:使用STUFF函数替换

SELECT 
    CASE 
        WHEN LEFT(SomeCol, 4) = '0169' THEN STUFF(SomeCol, 1, 4, '039')
        ELSE SomeCol
    END AS SomeCol
FROM @Table;

逻辑说明

  • STUFF(SomeCol, 1, 4, '039'):从原字符串第1位开始,替换长度为4的子串为'039',精准完成前缀替换并缩短长度
  • 通过CASE表达式控制仅对符合条件的行执行替换

执行结果

运行任一查询后,将得到如下预期输出:

SomeCol
0391234567
0392234567
0393234567
0394234567
0395234567
11691234567
11692234567
11693234567
11694234567
11695234567

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:15:10