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

如何从右侧计数使用charindex()提取字符串最后两个下划线分隔块?

提取字符串最后两个下划线分隔块的方法及CHARINDEX相关问题解答

关于CHARINDEX()从右侧计数的问题

CHARINDEX()本身没法直接从字符串右边开始数下划线的位置,它默认是从左往右搜索。不过可以通过反转字符串的方式,间接实现“找右侧第N个下划线”的效果,刚好能满足你提取最后两个数据块的需求。

实现提取的SQL代码

假设你的表叫YourTable,目标字段是FieldName,用下面的SQL就能拿到结果:

SELECT
    FieldName,
    SUBSTRING(
        FieldName,
        LEN(FieldName) - CHARINDEX('_', REVERSE(FieldName), CHARINDEX('_', REVERSE(FieldName)) + 1) + 2,
        LEN(FieldName)
    ) AS LastTwoBlocks
FROM YourTable;

代码逻辑拆解

  1. 反转字符串:把原字符串倒过来,比如123_456_ABC_DEF变成FED_CBA_654_321
  2. 找第一个反转后的下划线:拿到倒转后第一个下划线的位置,这对应原字符串的最后一个下划线
  3. 找第二个反转后的下划线:从第一个下划线的下一位开始找第二个下划线,这对应原字符串的倒数第二个下划线
  4. 计算截取起始位置:用原字符串的总长度减去第二个反转下划线的位置再加2,得到原字符串中倒数第二个下划线后面第一个字符的位置
  5. 截取目标内容:从这个起始位置截取到字符串末尾,就是最后两个数据块

测试结果

针对你给出的示例数据,运行后会得到:

FieldNameLastTwoBlocks
123_456_ABC_DEFABC_DEF
12_34_456_XYZ_PQRXYZ_PQR
LMN_OPQ_123_456123_456

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:35:18