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

如何使用SUBSTRING截取汽车型号,去除逗号后的颜色信息?

解决方案

要提取仅包含型号的内容,核心是处理两种情况:字段包含逗号(带颜色)和不包含逗号(无颜色)。需要先定位第一个空格的位置(区分品牌与型号),再定位第一个逗号的位置(区分型号与颜色),最终精准截取目标内容。

方案1:CASE语句兼容通用SQL Server版本

SELECT DISTINCT
    SUBSTRING(
        auto,
        CHARINDEX(' ', auto) + 1,
        CASE
            WHEN CHARINDEX(',', auto) > 0 THEN CHARINDEX(',', auto) - CHARINDEX(' ', auto) - 1
            ELSE LEN(auto) - CHARINDEX(' ', auto)
        END
    ) AS model
FROM cars

方案2:IIF简化语法(SQL Server 2012及以上版本)

如果你的SQL Server版本支持IIF函数,可用更简洁的写法:

SELECT DISTINCT
    SUBSTRING(
        auto,
        CHARINDEX(' ', auto) + 1,
        IIF(CHARINDEX(',', auto) > 0, CHARINDEX(',', auto) - CHARINDEX(' ', auto) - 1, LEN(auto) - CHARINDEX(' ', auto))
    ) AS model
FROM cars

方案3:分步截取(逻辑更直观)

先提取第一个空格后的所有内容,再去除逗号及后续部分:

SELECT DISTINCT
    LEFT(
        SUBSTRING(auto, CHARINDEX(' ', auto) + 1, LEN(auto)),
        IIF(CHARINDEX(',', SUBSTRING(auto, CHARINDEX(' ', auto) + 1, LEN(auto))) > 0, 
            CHARINDEX(',', SUBSTRING(auto, CHARINDEX(' ', auto) + 1, LEN(auto))) - 1,
            LEN(SUBSTRING(auto, CHARINDEX(' ', auto) + 1, LEN(auto)))
        )
    ) AS model
FROM cars

结果验证

执行任意上述SQL后,将得到符合预期的结果:

model
Vesta
F80
Elantra

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:33:13