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

如何用SQL提取独立纯数字?求正确查询语句

提取文本中独立的纯数字SQL方案

问题分析

你需要从文本ddd99938ddd 38483 eifn321ef中提取独立的纯数字串「38483」,之前使用的REGEXP_REPLACE(text, '[^ 0-9]+', '')会保留嵌在字母中的数字(比如99938、321),无法过滤非独立的数字,不符合需求。

解决方案

需要通过正则定位被非数字字符或字符串边界包围的纯数字序列,使用正则提取函数(而非替换函数)来获取目标内容。以下是主流SQL方言的实现:

MySQL

使用REGEXP_SUBSTR配合捕获组提取:

SELECT REGEXP_SUBSTR(你的字段名, '(^|\\D)(\\d+)(\\D|$)', 1, 1, '', 2) AS 独立纯数字
FROM 你的表名;
  • 正则解释:(^|\\D)匹配字符串开头或非数字字符,(\\d+)匹配目标纯数字,(\\D|$)匹配非数字字符或字符串结尾;最后一个参数2表示提取第二个捕获组(即\\d+匹配的内容)。

PostgreSQL

使用REGEXP_MATCH提取捕获组内容:

SELECT (REGEXP_MATCH(你的字段名, '(^|\D)(\d+)(\D|$)'))[2] AS 独立纯数字
FROM 你的表名;

或者使用REGEXP_SUBSTR:

SELECT REGEXP_SUBSTR(你的字段名, '(?:^|\D)(\d+)(?:\D|$)', 1, 1, 'g', 1) AS 独立纯数字
FROM 你的表名;

Oracle

使用REGEXP_SUBSTR指定捕获组:

SELECT REGEXP_SUBSTR(你的字段名, '(^|\D)(\d+)(\D|$)', 1, 1, NULL, 2) AS 独立纯数字
FROM 你的表名;

补充说明

如果文本中有多个独立纯数字串,可调整提取函数的出现次数参数(比如REGEXP_SUBSTR的第4个参数)来获取不同位置的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:15:00