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

SQL按分隔符提取子串:拆分Custom1维度值的中间数值问题

解决按'x'拆分维度字段的中间值提取问题

你当前的代码里,Widths字段会把第一个'x'之后的所有内容都取出来(比如对47x29x10会得到29x10),这显然不符合需求。下面是修正后的完整方案:

修正后的SQL代码

SELECT
    -- 提取第一个数值(Length)
    TRIM(SUBSTRING(Custom1, 1, CHARINDEX('x', Custom1) - 1)) AS Length,
    -- 提取中间数值(Width):定位两个'x'的位置,截取中间内容
    TRIM(SUBSTRING(
        Custom1,
        CHARINDEX('x', Custom1) + 1,
        CHARINDEX('x', Custom1, CHARINDEX('x', Custom1) + 1) - CHARINDEX('x', Custom1) - 1
    )) AS Width,
    -- 提取最后一个数值(Height):两种方式任选其一
    TRIM(SUBSTRING(
        Custom1,
        CHARINDEX('x', Custom1, CHARINDEX('x', Custom1) + 1) + 1,
        LEN(Custom1)
    )) AS Height
    -- 或者保留你原来的反转截取方式:
    -- REVERSE(SUBSTRING(REVERSE(Custom1), 1, CHARINDEX('x', REVERSE(Custom1)) - 1)) AS Height
FROM Table

关键逻辑说明

  • Width的提取:用CHARINDEX的第三个参数,指定从第一个'x'的下一位开始查找第二个'x'的位置,然后通过两个'x'的位置差,精准截取中间的数值部分,不受分隔符间字符长度限制。
  • Length和Height:Length的提取逻辑没问题;Height可以选择用第二个'x'的位置往后截取,也可以保留你原来的反转截取逻辑,两种方式都能正确提取末尾数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:03:10