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

如何在Microsoft SQL Server中拆分列并生成两个新列?

在SQL Server中拆分列生成两列的解决方案

场景1:列内容用固定分隔符分隔(如连字符、逗号、空格)

假设你的输入列名为SourceColumn,表名为YourTable,分隔符为-(可根据实际场景替换),以下是两种常用实现方法:

方法1:基础字符串函数(兼容所有SQL Server版本)

通过CHARINDEX定位分隔符位置,再用LEFT和RIGHT截取前后两段内容:

SELECT
    SourceColumn,
    -- 提取分隔符前的内容作为第一列
    LEFT(SourceColumn, CHARINDEX('-', SourceColumn) - 1) AS NewColumn1,
    -- 提取分隔符后的内容作为第二列
    RIGHT(SourceColumn, LEN(SourceColumn) - CHARINDEX('-', SourceColumn)) AS NewColumn2
FROM YourTable

如果存在部分行无分隔符的情况,可加判断避免报错:

SELECT
    SourceColumn,
    CASE WHEN CHARINDEX('-', SourceColumn) > 0 
         THEN LEFT(SourceColumn, CHARINDEX('-', SourceColumn) - 1)
         ELSE SourceColumn END AS NewColumn1,
    CASE WHEN CHARINDEX('-', SourceColumn) > 0 
         THEN RIGHT(SourceColumn, LEN(SourceColumn) - CHARINDEX('-', SourceColumn))
         ELSE NULL END AS NewColumn2
FROM YourTable

方法2:STRING_SPLIT(适用于SQL Server 2016及以上版本)

若分隔符唯一,可结合STRING_SPLIT和PIVOT将拆分后的行转为列:

SELECT
    SourceColumn,
    [1] AS NewColumn1,
    [2] AS NewColumn2
FROM (
    SELECT
        SourceColumn,
        value,
        -- 标记拆分内容的顺序
        ROW_NUMBER() OVER (PARTITION BY SourceColumn ORDER BY (SELECT NULL)) AS RowNum
    FROM YourTable
    CROSS APPLY STRING_SPLIT(SourceColumn, '-')
) AS SplitData
PIVOT (
    MAX(value) FOR RowNum IN ([1], [2])
) AS PivotResult

场景2:按固定长度拆分

如果输入列需按固定长度拆分(比如前5位为第一列,剩余内容为第二列),直接使用LEFT和SUBSTRING:

SELECT
    SourceColumn,
    LEFT(SourceColumn, 5) AS NewColumn1,
    SUBSTRING(SourceColumn, 6, LEN(SourceColumn)) AS NewColumn2
FROM YourTable

可根据实际输入列的格式,替换代码中的分隔符、长度参数适配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:12:12