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

如何在DB2数据库中使用正则函数提取字符串大写字母且忽略空格

DB2 提取字段中所有大写字母的实现方案

针对从Name字段提取所有大写字母、忽略其他字符的需求提供两种可行实现:

方案1:使用REGEXP_REPLACE实现(推荐)

直接替换所有非大写英文字母的字符为空,逻辑简单性能最优:

SELECT REGEXP_REPLACE(Name, '[^A-Z]', '') AS uppercase_abbr
FROM your_table;

测试效果:输入值为Leonardo Di Caprio时,返回结果为LDC,完全符合预期。

方案2:使用REGEXP_SUBSTR实现(适配原计划使用该函数的场景)

如果必须使用REGEXP_SUBSTR函数,可通过递归CTE逐位提取所有大写字母后拼接:

WITH cte (name, pos, result) AS (
    SELECT Name, 1, CAST('' AS VARCHAR(100))
    FROM your_table
    UNION ALL
    SELECT name, pos + 1, result || REGEXP_SUBSTR(name, '[A-Z]', 1, pos)
    FROM cte
    WHERE REGEXP_SUBSTR(name, '[A-Z]', 1, pos) IS NOT NULL
)
SELECT DISTINCT result AS uppercase_abbr
FROM cte
WHERE pos = (SELECT MAX(pos) FROM cte c WHERE c.name = cte.name);

以上方案适用于DB2 9.7及更高版本,正则匹配默认区分大小写,无需额外参数配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:24:00