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

PostgreSQL如何在WHERE子句中使用REGEXP筛选不符合格式的记录

PostgreSQL 正则筛选不符合格式的记录

格式规则说明

desc字段的合法格式要求为:

  • 字符串开头为连续的英文字母串
  • 字母串后紧接3位数字
  • 数字后固定为-(空格+横杠+空格)分隔符
  • 分隔符后为任意文本内容
    合法格式示例:AMAN032 - Gunting,可拆分为[连续字母][3位数字] - [任意文本]。

查询语句

使用PostgreSQL的!~操作符(即不匹配指定正则)筛选不符合规则的记录,SQL如下:

SELECT urutan, "desc"
FROM 替换为你的实际表名
WHERE "desc" !~ '^[A-Za-z]+[0-9]{3} - .+';

注意:desc是SQL保留关键字,作为字段名查询时需要用双引号包裹。如果业务允许分隔符后为空内容,可以将正则末尾的.+替换为.*。

正则逻辑解释

  • ^:锚定字符串开头,避免字符串中间出现符合规则的片段时被误判为合法
  • [A-Za-z]+:匹配1个及以上大小写英文字母,对应开头的连续字母串
  • [0-9]{3}:精确匹配3位连续数字
  • -:精确匹配固定格式的分隔符
  • .+:匹配分隔符后1个及以上的任意字符

返回结果

执行上述语句后,将精准返回所有不符合格式要求的记录,对应urutan为1434、1435、1437:

  • urutan=1434,desc=Oli Bell One AT-D 20W40:字母后未直接连接3位数字,无合法分隔符
  • urutan=1435,desc=Water Refill:字母后未直接连接3位数字,无合法分隔符
  • urutan=1437,desc=Kabel Ties 20 Cm - 50:开头字母段后存在空格,未直接连接3位数字,不满足前缀要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:48:44