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

如何在MSSQL中提取字符串第二个下划线后的所有内容?

提取第二个下划线后的字符串内容

首先明确:LIKE操作符的作用是筛选符合指定模式的行,它本身没法直接提取字符串的特定部分。你之前写的WHERE [Product] LIKE '%_%' escape ''只是筛选包含下划线的行,和提取内容完全不相关。

要提取第二个下划线之后的所有内容,得结合字符串截取函数,不同数据库的写法略有差异:

SQL Server 写法

通过CHARINDEX两次定位下划线的位置,再用SUBSTRING截取后续内容:

SELECT SUBSTRING(
    [Product],
    -- 找到第二个下划线的位置,再加1就是要截取的起始位置
    CHARINDEX('_', [Product], CHARINDEX('_', [Product]) + 1) + 1,
    LEN([Product]) -- 截取到字符串末尾
) AS ExtractedContent
FROM YourTableName
-- 先筛选出至少包含两个下划线的行,避免报错
WHERE [Product] LIKE '%_%_%'

MySQL 写法

可以用LOCATE定位第二个下划线,再用SUBSTRING截取,或者用更简洁的SUBSTRING_INDEX组合:

方法1:LOCATE + SUBSTRING

SELECT SUBSTRING(
    [Product],
    LOCATE('_', [Product], LOCATE('_', [Product]) + 1) + 1
) AS ExtractedContent
FROM YourTableName
WHERE [Product] LIKE '%_%_%'

方法2:SUBSTRING_INDEX 组合

SELECT SUBSTRING_INDEX([Product], '_', - (LENGTH([Product]) - LENGTH(REPLACE([Product], '_', '')) - 1))
FROM YourTableName
WHERE [Product] LIKE '%_%_%'

如果是其他数据库(比如PostgreSQL),可以用STRPOS替代CHARINDEX/LOCATE,逻辑一致:先找到第二个下划线的位置,再从该位置+1开始截取到末尾。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:25:18