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

SQL Server中如何提取字符串的倒数第二个单词?

提取SQL Server字符串中的倒数第二个单词

可以通过嵌套使用REVERSE、CHARINDEX和SUBSTRING函数实现需求,核心思路是先定位到字符串的最后两个单词,再从中分离出倒数第二个单词。

分步实现代码(可读性更强)

Declare @text as varchar(60)
Set @text = 'Next Generation Customer Service'

-- 1. 反转字符串,定位第一个空格(对应原字符串最后一个单词的起始位置)
DECLARE @reversedText VARCHAR(60) = REVERSE(@text)
DECLARE @firstSpacePos INT = CHARINDEX(' ', @reversedText)

-- 2. 截取反转后第一个空格之后的部分,得到原字符串倒数两个单词的反转结果
DECLARE @lastTwoWordsReversed VARCHAR(60) = SUBSTRING(@reversedText, @firstSpacePos + 1, LEN(@reversedText))

-- 3. 再次反转得到原顺序的倒数两个单词,定位其中最后一个空格
DECLARE @lastTwoWords VARCHAR(60) = REVERSE(@lastTwoWordsReversed)
DECLARE @lastSpacePos INT = CHARINDEX(' ', REVERSE(@lastTwoWords))

-- 4. 截取空格前的内容,即为倒数第二个单词
DECLARE @secondLastWord VARCHAR(60) = SUBSTRING(@lastTwoWords, 1, LEN(@lastTwoWords) - @lastSpacePos)

SELECT @secondLastWord AS SecondLastWord

简洁版代码(合并为单查询)

Declare @text as varchar(60)
Set @text = 'Next Generation Customer Service'

SELECT 
  SUBSTRING(
    REVERSE(SUBSTRING(REVERSE(@text), CHARINDEX(' ', REVERSE(@text)) + 1, LEN(@text))),
    1,
    CHARINDEX(' ', REVERSE(SUBSTRING(REVERSE(@text), CHARINDEX(' ', REVERSE(@text)) + 1, LEN(@text)))) - 1
  ) AS SecondLastWord

说明

  • 该方法假设字符串使用单个空格作为单词分隔符,且字符串至少包含两个单词。
  • 若需要支持连续多空格的场景,可先通过REPLACE函数将连续空格替换为单个空格,再执行上述逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:28:07