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

SQL Server使用CHARINDEX函数提取分隔列第3与第4个冒号之间的值

SQL提取指定位置冒号间内容解决方案

你当前的代码使用固定数值-6计算截取长度属于硬编码,只能匹配特定长度的输入,无法通用适配所有场景。可通过动态计算冒号位置的方式修正:

通用嵌套CHARINDEX实现(兼容所有支持CHARINDEX的数据库)

SELECT 
    SourceID,
    SUBSTRING(
        SourceID,
        -- 取第3个冒号的下一个字符作为截取起点
        CHARINDEX(':', SourceID, CHARINDEX(':', SourceID, CHARINDEX(':', SourceID) + 1) + 1) + 1,
        -- 动态计算截取长度:第4个冒号位置 - 第3个冒号位置 -1
        CHARINDEX(':', SourceID, CHARINDEX(':', SourceID, CHARINDEX(':', SourceID, CHARINDEX(':', SourceID) + 1) + 1) + 1)
        - CHARINDEX(':', SourceID, CHARINDEX(':', SourceID, CHARINDEX(':', SourceID) + 1) + 1)
        - 1
    ) AS Column_C
FROM temp.table

简化写法(支持字符串拆分函数的数据库可使用)

如果所用数据库支持STRING_SPLIT(SQL Server)、split_part(PostgreSQL/Redshift)等拆分函数,代码会更简洁易读:

-- PostgreSQL/Redshift示例
SELECT 
    SourceID,
    split_part(SourceID, ':', 4) AS Column_C
FROM temp.table
-- SQL Server示例
SELECT 
    SourceID,
    (SELECT value FROM STRING_SPLIT(SourceID, ':') ORDER BY (SELECT 1) OFFSET 3 ROWS FETCH NEXT 1 ROW ONLY) AS Column_C
FROM temp.table

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:06:03