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

Oracle SQL:如何提取表中字段里HRS前的数字?

解决方法

你的原查询返回null是因为正则逻辑错了——你用[[:alpha:]]+匹配字母,但我们要提取的是数字(含小数),这个正则根本匹配不到目标内容。

正确的函数用法(以Oracle为例)

直接用REGEXP_SUBSTR提取"hrs"前的数字序列:

SELECT 
    REGEXP_SUBSTR(SCHEDULE_NAME, '(\d+\.?\d*) hrs', 1, 1, NULL, 1) AS extracted_hours
FROM your_table;

参数说明:

  • (\d+\.?\d*):匹配整数或小数格式的数字(\d+匹配至少1个数字,\.?匹配可选的小数点,\d*匹配小数点后可选的数字)
  • 最后一个1:指定提取正则里第1个捕获组的内容(也就是括号里匹配到的数字)

其他数据库适配(比如MySQL)

如果用MySQL,可以用REGEXP_REPLACE替换掉无关内容,只保留目标数字:

SELECT 
    REGEXP_REPLACE(SCHEDULE_NAME, '.*?(\d+\.?\d*) hrs.*', '$1') AS extracted_hours
FROM your_table;

验证效果

针对你的示例数据,这个查询会准确返回:

7.78
7.78
7.78
7.78
7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:27:49