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

如何从SQL的varchar类型字符串中提取以数字开头的词语

从字符串中提取以数字开头词语的SQL实现方案

需求描述

从varchar类型存储的句子中,提取任意位置出现的以数字开头的词语。

示例测试数据

-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, tokens VARCHAR(100));
INSERT INTO @tbl (tokens) VALUES
('abc 1XXXX xyz'),
('abc xyz 2XXXXXXXX'),
('3XX abc xyz');
-- DDL and sample data population, end

预期输出

+----+-----------+
| ID |  Result   |
+----+-----------+
|  1 | 1XXXX     |
|  2 | 2XXXXXXXX |
|  3 | 3XX       |
+----+-----------+

实现SQL(适用SQL Server 2016及以上版本)

核心思路是先按空格拆分字符串为单个词语,再筛选首字符为数字的结果:

SELECT 
    t.ID,
    s.value AS Result
FROM @tbl t
CROSS APPLY STRING_SPLIT(t.tokens, ' ') s
WHERE LEFT(s.value, 1) LIKE '[0-9]'

兼容低版本SQL Server的实现方案

如果使用的SQL Server版本不支持STRING_SPLIT函数,可以用XML拆分方式实现:

SELECT 
    t.ID,
    Split.a.value('.', 'VARCHAR(100)') AS Result
FROM  
(
    SELECT 
        ID, 
        CAST('<X>' + REPLACE(tokens, ' ', '</X><X>') + '</X>' AS XML) AS split_xml
    FROM @tbl
) AS t
CROSS APPLY split_xml.nodes ('/X') AS Split(a)
WHERE LEFT(Split.a.value('.', 'VARCHAR(100)'), 1) LIKE '[0-9]'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:18:04