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

PostgreSQL:拆分列中的数字与字母

PostgreSQL拆分数字与字母列的方法

针对你提供的Duration列数据(示例:90 Min),可以用以下几种方法拆分数字和字母部分:

方法1:正则表达式替换

提取数字部分

SELECT regexp_replace(Duration, '[^0-9]', '', 'g')::int AS duration_num
FROM your_table;

regexp_replace会移除所有非数字字符,最后用::int将结果转为整数类型,按需也可改用::numeric。

提取文本部分

SELECT trim(regexp_replace(Duration, '[0-9]', '', 'g')) AS duration_unit
FROM your_table;

先移除所有数字,再用trim()去掉文本前的空格,得到干净的单位文本。

方法2:固定格式拆分(高效)

如果数据格式统一为「数字+空格+文本」,直接按空格拆分更高效:

SELECT 
  split_part(Duration, ' ', 1)::int AS duration_num,
  split_part(Duration, ' ', 2) AS duration_unit
FROM your_table;

split_part按指定分隔符拆分字符串,取对应位置的内容即可。

方法3:正则匹配截取

提取开头连续数字

SELECT substring(Duration FROM '^\d+')::int AS duration_num
FROM your_table;

^\d+匹配字符串开头的连续数字,精准提取数值部分。

提取字母文本

SELECT substring(Duration FROM '[A-Za-z]+') AS duration_unit
FROM your_table;

[A-Za-z]+匹配连续的字母字符,自动忽略前面的数字和空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:27:24