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

PostgreSQL:提取数字前纯字母,无数字时保留原内容

PostgreSQL提取数字前文本并保留无数字原内容

要实现提取列内数字之前的纯字母(含空格)内容,同时在无数字时保留原文本,可通过正则匹配+条件判断结合PostgreSQL的字符串函数实现:

核心SQL语句

SELECT
  medication_title,
  CASE
    -- 判断字符串是否包含数字
    WHEN medication_title ~ '\d' THEN
      -- 替换掉第一个数字及后续所有内容,再去除末尾多余空格
      TRIM(regexp_replace(medication_title, '\d.*', '', 'g'))
    -- 无数字时直接返回原内容
    ELSE medication_title
  END AS medication_commercialname
FROM your_table_name;

语句解释

  • medication_title ~ '\d':使用正则匹配运算符~判断字段是否包含数字(\d表示任意数字字符)。
  • regexp_replace(medication_title, '\d.*', '', 'g'):将字符串中第一个数字及之后的所有内容替换为空字符串(\d.*匹配从第一个数字开始到结尾的所有字符)。
  • TRIM():去除替换后可能残留的末尾空格,保证结果格式整洁。
  • CASE WHEN:实现条件分支,仅在存在数字时应用提取规则,否则保留原内容。

输入输出对比

输入数据

medication_title
GLYXAMBI 25 MG E 5 MG
GLIFAGE XR 750 MG
AD TIL
SIMETICON GOTAS

输出结果

medication_titlemedication_commercialname
GLYXAMBI 25 MG E 5 MGGLYXAMBI
GLIFAGE XR 750 MGGLIFAGE XR
AD TILAD TIL
SIMETICON GOTASSIMETICON GOTAS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:00:55