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

优化SQL Server子字符串提取:简化Trim字段提取方案咨询

针对SQL Server提取倒数第二个反斜杠与最后一个反斜杠间字段的简洁方案

方案1:使用STRING_SPLIT(SQL Server 2016及以上版本)

若你的SQL Server版本支持STRING_SPLIT,可将字符串按反斜杠拆分后直接取倒数第二个元素:

SELECT 
    (SELECT value 
     FROM STRING_SPLIT(CAR_DESC, '\') 
     ORDER BY (SELECT NULL) OFFSET (SELECT COUNT(*) - 2 FROM STRING_SPLIT(CAR_DESC, '\')) ROWS FETCH NEXT 1 ROW ONLY) AS TEST1
FROM TABLEA

注:SQL Server兼容级别130及以上时,STRING_SPLIT的拆分结果会保持原字符串的顺序。

方案2:简化REVERSE嵌套写法

你现有的逻辑可以通过子查询预计算重复值,提升可读性同时简化代码:

SELECT 
    REVERSE(SUBSTRING(rev_str, first_slash + 1, second_slash - first_slash - 1)) AS TEST1
FROM (
    SELECT 
        CAR_DESC,
        REVERSE(CAR_DESC) AS rev_str,
        CHARINDEX('\', REVERSE(CAR_DESC)) AS first_slash,
        CHARINDEX('\', REVERSE(CAR_DESC), CHARINDEX('\', REVERSE(CAR_DESC)) + 1) AS second_slash
    FROM TABLEA
) t

子查询提前算出反转后的字符串和两次反斜杠的位置,避免主查询中重复调用函数,逻辑更清晰。

方案3:XML解析法(兼容更早SQL Server版本)

如果你的版本低于2016,可借助XML解析实现提取:

SELECT 
    CAST('<root><v>' + REPLACE(CAR_DESC, '\', '</v><v>') + '</v></root>' AS XML).value('(/root/v[last()-1])[1]', 'varchar(100)') AS TEST1
FROM TABLEA

将原字符串转换为XML节点结构后,直接选取倒数第二个节点的值,写法更简洁直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:42:34