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

PostgreSQL正则表达式:从字符串提取地震震级数值

提取PostgreSQL字符串中的地震震级数值

解决方案

你可以使用PostgreSQL的正则表达式函数提取震级数值,以下是两种常用方法:

1. 使用 substring 函数

substring 可直接通过正则表达式捕获目标部分:

SELECT 
  event_str,
  substring(event_str from '^(?:M|Md) (\d+\.\d+) -') AS magnitude
FROM earthquakes;

2. 使用 regexp_match 函数

regexp_match 返回匹配结果的数组,取第一个元素即可得到震级:

SELECT 
  event_str,
  (regexp_match(event_str, '^(?:M|Md) (\d+\.\d+) -'))[1] AS magnitude
FROM earthquakes;

正则表达式说明

  • ^:匹配字符串开头
  • (?:M|Md):非捕获组,匹配前缀 "M" 或 "Md"
  • :匹配前缀后的空格
  • (\d+\.\d+):捕获组,匹配震级数值(包含整数和小数部分)
  • -:匹配震级后的 " -" 分隔符

将提取结果存入新列

如果需要将震级永久存储为单独列,可执行以下步骤:

  1. 添加数值类型列:
ALTER TABLE earthquakes ADD COLUMN magnitude numeric;
  1. 更新列值:
UPDATE earthquakes 
SET magnitude = substring(event_str from '^(?:M|Md) (\d+\.\d+) -')::numeric;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:55:16