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

SSMS中提取SQL临时表字符串末尾1-3位数字至新列

解决方案

不需要使用IF语句,直接利用SQL Server的字符串函数就能高效实现需求。以下是具体方法:

方法1:查询时直接提取结果

使用REVERSE、CHARINDEX和SUBSTRING组合定位最后一个下划线后的内容,再通过TRY_CAST确保只保留有效数字(避免非数字结尾的情况报错):

SELECT 
    Description,
    TRY_CAST(SUBSTRING(Description, LEN(Description) - CHARINDEX('_', REVERSE(Description)) + 2, 3) AS INT) AS EndNumber
FROM #testTempTbl1;

逻辑说明:

  • REVERSE(Description):反转字符串,把末尾的下划线转为开头第一个下划线
  • CHARINDEX('_', REVERSE(Description)):获取反转后第一个下划线的位置,对应原字符串最后一个下划线的位置
  • LEN(Description) - CHARINDEX('_', REVERSE(Description)) + 2:计算原字符串中最后一个下划线之后的起始截取位置
  • SUBSTRING(..., 3):最多截取3位,匹配你需要的1-3位数字需求
  • TRY_CAST:若末尾不是数字,返回NULL,避免查询中断

方法2:给临时表添加新列并填充数据

如果需要在临时表生命周期内永久保存结果,可以新增列后批量更新:

-- 添加存储结果的新列
ALTER TABLE #testTempTbl1 ADD EndNumber INT;

-- 填充数据
UPDATE #testTempTbl1
SET EndNumber = TRY_CAST(SUBSTRING(Description, LEN(Description) - CHARINDEX('_', REVERSE(Description)) + 2, 3) AS INT);

补充说明:

如果能保证Description列所有值的最后一个下划线后都是1-3位数字,可以去掉TRY_CAST,直接截取后转换为INT,或保留字符串类型(无需数值运算时)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:44:54