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

如何在SQL中将字符串拆分后将州和城市结果显示在同一行?

解决方案:将拆分结果转为同一行的不同列

针对你的需求,这里提供两种可行的SQL实现方式:

方法1:直接字符串截取(适合固定格式场景)

由于你的字符串有固定结构C[州名]_d[城市名],可以直接通过定位下划线位置来截取目标内容,执行效率更高:

DECLARE @str varchar(30)
SET @str = 'CMaharashtra_dPune'

DECLARE @underscorePos int = CHARINDEX('_', @str)

SELECT
    SUBSTRING(@str, 2, @underscorePos - 2) AS State,
    SUBSTRING(@str, @underscorePos + 2, LEN(@str) - @underscorePos - 1) AS City

执行后会直接返回一行数据,State列显示Maharashtra,City列显示Pune。

方法2:STRING_SPLIT结合条件聚合(通用场景)

如果需要更通用的拆分转列逻辑,可通过给拆分后的行添加序号,再用条件聚合将行数据转为列:

DECLARE @str varchar(30)
SET @str = 'CMaharashtra_dPune'

WITH SplitData AS (
    SELECT
        value,
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum
    FROM STRING_SPLIT(SUBSTRING(@str, 2, LEN(@str)), '_')
)
SELECT
    MAX(CASE WHEN RowNum = 1 THEN value END) AS State,
    STUFF(MAX(CASE WHEN RowNum = 2 THEN value END), 1, 1, '') AS City
FROM SplitData

这种方法适合后续字符串结构有调整但仍保持“下划线分隔两个值”的场景,只需调整STUFF函数的参数即可适配不同前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:52:40