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

如何在SQL中将数字键拆分为最多各4位的两列?

拆分数字键为Split1和Split2列的实现方法

根据需求,将LeadKey字段拆分为两列:Split2取数字最后4位(不足4位则为空),剩余部分放入Split1(4位数字时Split1为空,不足4位时Split1为原数字),以下提供两种常用场景的实现方案:

一、SQL数据源端处理(推荐,提前处理减少SSAS计算压力)

方法1:字符串处理法(直观,适合所有数字长度)

通过将数字转为字符串,判断长度后截取对应部分:

SELECT
    LeadKey,
    -- Split1:截取除最后4位外的部分,不足4位返回原数,4位返回空
    CASE 
        WHEN LEN(CAST(LeadKey AS VARCHAR)) > 4 THEN LEFT(CAST(LeadKey AS VARCHAR), LEN(CAST(LeadKey AS VARCHAR)) - 4)
        WHEN LEN(CAST(LeadKey AS VARCHAR)) < 4 THEN LeadKey
        ELSE NULL
    END AS Split1,
    -- Split2:截取最后4位,不足4位返回空
    CASE 
        WHEN LEN(CAST(LeadKey AS VARCHAR)) >= 4 THEN RIGHT(CAST(LeadKey AS VARCHAR), 4)
        ELSE NULL
    END AS Split2
FROM YourTable;

方法2:数学运算处理法(性能更优,仅适用于整数类型)

利用整数除法和取模运算直接计算,无需字符串转换:

SELECT
    LeadKey,
    -- Split1:去掉最后4位的整数部分,不足4位返回原数,4位返回空
    CASE 
        WHEN LeadKey >= 10000 THEN FLOOR(LeadKey / 10000)
        WHEN LeadKey < 1000 THEN LeadKey
        ELSE NULL
    END AS Split1,
    -- Split2:取最后4位,不足4位返回空
    CASE 
        WHEN LeadKey >= 1000 THEN LeadKey % 10000
        ELSE NULL
    END AS Split2
FROM YourTable;

二、SSAS模型内创建计算列

如果需要在SSAS Tabular模型中直接生成拆分列,可使用DAX表达式创建计算列:

Split1计算列

Split1 = 
VAR LeadLen = LEN(INT(LeadKey))
RETURN
    IF(LeadLen > 4, LEFT(LeadKey, LeadLen - 4), IF(LeadLen < 4, LeadKey, BLANK()))

Split2计算列

Split2 = 
VAR LeadLen = LEN(INT(LeadKey))
RETURN
    IF(LeadLen >= 4, RIGHT(LeadKey, 4), BLANK())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:35:13