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

PostgreSQL中bigint用~正则运算符报错,能否无需类型转换?

解决PostgreSQL中bigint字段无法使用正则操作符的问题

嘿,作为PostgreSQL新手遇到这个问题太正常啦,我来给你捋清楚怎么搞定!

首先你碰到的ERROR: operator does not exist: bigint ~ unknown报错,原因很直接:PostgreSQL的~正则匹配操作符只支持字符串类型(text/varchar等),而你的install_status是bigint数值类型,数据库找不到对应的操作符来处理数值和正则的匹配,所以就报错了。

你问能不能不用类型转换让查询正常运行?当然可以!而且这种场景下完全没必要用正则——因为你要匹配的是明确的两个数值:3和110,直接用数值匹配的方式就行,比正则更高效,还不用转类型。

给你两种等价的写法:

方法1:使用IN子句(更简洁)

select name, ip_address, install_status 
from sn_cache_prod.cmdb_ci 
where support_group = 'bee96a2135a631007fa2c5751b2c74be' 
  and u_environment = 5 
  and install_status IN (3, 110);

方法2:使用OR条件(逻辑更直观)

select name, ip_address, install_status 
from sn_cache_prod.cmdb_ci 
where support_group = 'bee96a2135a631007fa2c5751b2c74be' 
  and u_environment = 5 
  and (install_status = 3 OR install_status = 110);

额外小提示:

这两种写法不仅满足你“无需类型转换”的要求,还有个隐藏优势:如果install_status字段有索引的话,数值匹配可以直接利用索引,查询性能会比转成字符串用正则好很多哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:58:11