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

SQL Server中如何正确提取逗号分隔字符串的最后一个值?

提取SQL Server中逗号分隔字符串的最后一个值

你的原语句报错是因为子查询没有用括号包裹,且早期SQL Server版本中STRING_SPLIT返回的结果顺序无显式保证,以下是几种正确写法:

方法一:修正你的反转思路

给子查询加上括号,同时显式指定排序确保取第一个拆分结果:

SELECT REVERSE((SELECT TOP 1 value FROM STRING_SPLIT(REVERSE('test,is,what,this,is'), ',') ORDER BY (SELECT NULL)))

注:ORDER BY (SELECT NULL)是为了在低兼容级别环境中确保结果顺序,SQL Server 2016+兼容级别130及以上时,STRING_SPLIT默认按输入顺序返回,但显式排序更稳妥。

方法二:利用SQL Server 2022+的ordinal参数(推荐)

SQL Server 2022及以后版本的STRING_SPLIT支持enable_ordinal参数,可直接通过序号取最后一个元素:

SELECT value
FROM STRING_SPLIT('test,is,what,this,is', ',', 1)
ORDER BY ordinal DESC
OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY

方法三:纯字符串函数实现(无需拆分,性能更优)

如果不需要拆分整个字符串,直接用字符串定位函数提取最后一段,效率更高:

SELECT RIGHT('test,is,what,this,is', CHARINDEX(',', REVERSE('test,is,what,this,is')) - 1)

原理:先反转字符串找到第一个逗号的位置,再用RIGHT截取原字符串对应长度的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:33:17