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

如何提取两个分隔符间的子串并输出至SQL计算列

问题原因

你原有代码的逻辑只跳过了第一个空格,提取的是第一个和第二个空格之间的内容,所以返回了job。要拿到第二个空格和第三个空格之间的目标串,需要先定位到第二个空格的位置,再从该位置往后找第三个空格的位置,截取中间的内容即可。

正确实现代码

ALTER TABLE Test_Data
ADD substring_1 AS 
CASE 
    WHEN short_description LIKE 'ABCD%' 
        -- 校验存在至少3个空格,避免不符合格式的内容触发报错
        AND CHARINDEX(' ', short_description, CHARINDEX(' ', short_description) + 1) > 0
        AND CHARINDEX(' ', short_description, CHARINDEX(' ', short_description, CHARINDEX(' ', short_description) + 1) + 1) > 0
    THEN SUBSTRING(
        short_description,
        -- 第二个空格的位置+1,作为截取的起始位置
        CHARINDEX(' ', short_description, CHARINDEX(' ', short_description) + 1) + 1,
        -- 第三个空格位置 减 第二个空格位置 再减1,就是目标串的长度
        CHARINDEX(' ', short_description, CHARINDEX(' ', short_description, CHARINDEX(' ', short_description) + 1) + 1) 
        - CHARINDEX(' ', short_description, CHARINDEX(' ', short_description) + 1) 
        - 1
    )
    ELSE NULL -- 不符合格式的内容返回空,可根据需求调整返回值
END

逻辑说明

CHARINDEX支持传入第三个参数作为查找的起始位置,我们通过嵌套调用依次定位三个空格的位置:

  1. 最内层CHARINDEX(' ', short_description)定位第一个空格的位置
  2. 向外一层基于第一个空格的位置+1作为起始点,查找第二个空格的位置
  3. 再向外一层基于第二个空格的位置+1作为起始点,查找第三个空格的位置
    最终截取两个空格中间的内容,就能得到你需要的目标串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 21:45:04