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

求助:SQL Server 12中拆分列并提取第三段分隔值的SELECT语句

解决方案

由于SQL Server 12(即SQL Server 2014)并不支持STRING_SPLIT函数(该函数从SQL Server 2016开始引入),且即便在支持的版本中,STRING_SPLIT返回的是行集而非直接提取指定位置的元素,因此可以通过以下两种传统字符串函数的方法实现需求:

方法一:使用CHARINDEX与SUBSTRING嵌套

通过定位两个冒号的位置,提取中间的目标子串:

SELECT 
    SUBSTRING(
        foo, 
        CHARINDEX(':', foo) + 1, 
        CHARINDEX(':', foo, CHARINDEX(':', foo) + 1) - CHARINDEX(':', foo) - 1
    ) AS target_value
FROM myDB.dbo.my_table;

方法二:使用REPLACE结合PARSENAME

利用PARSENAME按点分割字符串的特性,先将冒号替换为点,再提取倒数第二部分:

SELECT 
    PARSENAME(REPLACE(foo, ':', '.'), 2) AS target_value
FROM myDB.dbo.my_table;

两种方法都能准确提取foo列中两个冒号之间的内容(即示例中的1234和5678),其中方法二代码更简洁,适合格式固定的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:06:27