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

PostgreSQL中使用正则排除()字符:给定WHERE子句是否足够?

PostgreSQL中排除字符(和)的正确方法

你提供的WHERE子句无法满足排除(和)的需求,原因如下:

  • 你的正则表达式^.*[^A-Za-z0-9() .-].*$的作用是匹配包含不在指定允许列表(字母、数字、()、空格、点、横杠)中的任意字符的行,这和你想要排除(和)的目标完全相反——它会放行包含(和)但无其他非法字符的行,仅拦截含其他特殊字符的行。

正确的写法

如果你需要筛选**column1中完全不包含(和)**的行,可使用以下两种方式:

方式1:否定正则匹配

WHERE column1 !~ '[()]'
  • 说明:!~是PostgreSQL的正则不匹配操作符,[()]匹配任意一个(或)字符,整个条件表示字段中不存在这两个字符中的任意一个。

方式2:LIKE操作符(更直观)

WHERE column1 NOT LIKE '%(%' AND column1 NOT LIKE '%)%'
  • 说明:%为通配符,NOT LIKE '%(%'确保字段不含(,NOT LIKE '%)%'确保不含),两者结合实现排除目标字符的需求。

额外补充

如果你的实际需求是仅保留包含字母、数字、空格、点、横杠的行(即同时排除(、)及其他所有特殊字符),可修正正则为:

WHERE column1 ~ '^[A-Za-z0-9 .-]*$'
  • 说明:^和$匹配字段首尾,[A-Za-z0-9 .-]*表示允许的字符可出现0次或多次,仅保留符合要求的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:31:04