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

SQL Server中Device列格式转换:去前导零及特殊规则处理需求

解决SQL Server Device列格式转换问题

你可以通过分步处理字符串的方式实现需求:先提取核心数字部分,拆分后去除每部分前导零,最后根据第二部分是否为双零决定拼接方式。以下是修改后的查询语句:

SELECT 
    CASE 
        -- 当第二部分转换为整数后为0(即原先是00),只保留处理后的第一部分
        WHEN CAST(RIGHT(CoreStr, LEN(CoreStr) - CHARINDEX('_', CoreStr)) AS INT) = 0 
            THEN CAST(CAST(LEFT(CoreStr, CHARINDEX('_', CoreStr) - 1) AS INT) AS VARCHAR(10))
        -- 否则拼接处理后的两部分,用-分隔
        ELSE CONCAT(
            CAST(CAST(LEFT(CoreStr, CHARINDEX('_', CoreStr) - 1) AS INT) AS VARCHAR(10)),
            '-',
            CAST(CAST(RIGHT(CoreStr, LEN(CoreStr) - CHARINDEX('_', CoreStr)) AS INT) AS VARCHAR(10))
        )
    END AS DeviceNew
FROM (
    -- 第一步:提取去除DC_和末尾非数字后的核心字符串
    SELECT 
        SUBSTRING(Device, 4, LEN(Device) - PATINDEX('%[0-9]%', REVERSE(Device)) - 3 + 1) AS CoreStr
    FROM YourTable -- 替换为你的实际表名
) t;

逻辑说明

  1. 提取核心字符串:通过SUBSTRING和PATINDEX去掉开头的DC_和末尾的非数字字符,得到类似003_08的中间字符串。
  2. 拆分并去前导零:将核心字符串按_拆分为两部分,通过CAST为整数再转回字符串的方式自动去除前导零。
  3. 特殊情况处理:如果第二部分是00(转换为整数后为0),则只保留第一部分;否则拼接两部分为X-Y的格式。

内容的提问来源于stack exchange,提问作者Dr.Prog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:02:05