You need to enable JavaScript to run this app. SQL Server 2014中如何提取字符串第一个数字右侧的全部内容?
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2014中如何提取字符串第一个数字右侧的全部内容?

SQL Server 2014 提取首个数字串后内容解决方案

错误原因分析

你原有的查询语句无法得到预期结果,是因为 CHARINDEX 函数不支持通配符匹配,你传入的'[0-9]%'会被当做普通字面量做精确匹配,无法匹配到字符串中的数字,返回值为0,最终截取逻辑完全不符合要求。

正确实现方案

我们可以使用支持通配符匹配的PATINDEX函数实现需求,逻辑为:

  1. 定位到字符串中第一个数字的起始位置
  2. 从该位置向后查找第一个非数字字符的位置
  3. 从第一个非数字字符的位置开始截取剩余字符串,去除左侧空格即可得到结果

测试示例代码

SELECT LTRIM(
    SUBSTRING(
        'ABC 123 DEF XYZ',
        PATINDEX('%[^0-9]%', SUBSTRING('ABC 123 DEF XYZ', PATINDEX('%[0-9]%', 'ABC 123 DEF XYZ'), LEN('ABC 123 DEF XYZ'))) + PATINDEX('%[0-9]%', 'ABC 123 DEF XYZ') - 1,
        LEN('ABC 123 DEF XYZ')
    )
) AS result

执行上述代码,输出结果为:DEF XYZ,符合预期。

表字段查询适配

如果需要处理表中的字段数据,假设字段名为content,表名为your_table,可以使用如下语句:

SELECT 
    -- 无数字的情况可自定义返回值,此处返回空字符串
    CASE WHEN PATINDEX('%[0-9]%', content) = 0 THEN ''
    ELSE LTRIM(
        SUBSTRING(
            content,
            PATINDEX('%[^0-9]%', SUBSTRING(content, PATINDEX('%[0-9]%', content), LEN(content))) + PATINDEX('%[0-9]%', content) - 1,
            LEN(content)
        )
    ) END AS result
FROM your_table

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 02:24:02