news 2026/4/7 22:47:34

‘=’特殊运算符和‘-’关联报错

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
‘=’特殊运算符和‘-’关联报错

文章目录

  • 环境
  • 症状
  • 问题原因
  • 解决方案
  • 报错编码

环境

系统平台:N/A
版本:4.7.7,4.3.4

症状

highgo=# SELECT * FROM TEST WHERE id !=-1;ERROR:42883: operator doesnotexist:integer!=-integerLINE1:SELECT*FROMTESTWHEREid!=-1;^HINT:Nooperator matches the given nameandargumenttype(s).You might needtoaddexplicittypecasts.

在SQL语句中‘=’和‘-’之前有特殊运算符(例如!)会报错“操作符不存在”。

问题原因

HGDB中并没有=-这个操作符,刚才的2 =- 3会被解析成2 = (-3)。HGDB的词法分析器,会把=-拆分成=和-两个操作符,但如果=-前面还有~!@#^&|`?%中的任一字符,则不拆分,当做一个整体。所以会报告找不到 !=- 这个操作符。

此外可以通过如下几个步骤验证一下:

highgo=# CREATE table TEST ( id serial primary key, dou_num numeric );

日志: 00000: 语句: CREATE table TEST ( id serial primary key, dou_num numeric );

CREATETABLEhighgo=# INSERT INTO TEST(DOU_NUM) VALUES(1),(-1);INSERT02highgo=# select * from test;id|dou_num----+---------1|12|-1(2rows)highgo=#highgo=# SELECT * FROM TEST WHERE DOU_NUM !=1;id|dou_num----+---------2|-1(1row)highgo=# SELECT * FROM TEST WHERE DOU_NUM !=-1;

错误: 42883: 操作符不存在: numeric !=- integer 第 34 个字符处

提示: 没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.

语句: SELECT * FROM TEST WHERE DOU_NUM !=-1;

错误: 42883: 操作符不存在: numeric !=- integer

LINE 1: SELECT * FROM TEST WHERE DOU_NUM !=-1;

^

HINT: 没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.

highgo=# SELECT * FROM TEST WHERE DOU_NUM !=1;id|dou_num----+---------2|-1(1row)highgo=# SELECT * FROM TEST WHERE DOU_NUM !=-1;

错误: 42883: 操作符不存在: numeric !=- integer 第 34 个字符处

提示: 没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.

语句: SELECT * FROM TEST WHERE DOU_NUM !=-1;

错误: 42883: 操作符不存在: numeric !=- integer

LINE 1: SELECT * FROM TEST WHERE DOU_NUM !=-1;

^

HINT: 没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.

highgo=# SELECT * FROM TEST WHERE DOU_NUM !='-1';id|dou_num----+---------1|1(1row)highgo=# SELECT * FROM TEST WHERE DOU_NUM =-1;id|dou_num----+---------2|-1(1row)highgo=# SELECT * FROM TEST WHERE DOU_NUM !=0-1;id|dou_num----+---------1|1(1row)

解决方案

方案一:如遇到不等于情况时,建议使用<>,上述问题可做如下更改:SELECT * FROM TEST WHERE id <>-1;

方案二:在‘=’和‘-’之前有特殊运算符(例如!)时,‘-’前面添加空格(部分应用可能存在不识别空格的现象),上述问题可做如下更改:SELECT * FROM TEST WHERE id != -1;

方案三:写成‘0+*’格式(*可为负数)即可避免词法分析器的检查,上述问题可做如下更改:SELECT * FROM TEST WHERE id !=0±1;

我们建议优先使用方案一。

报错编码

42883

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 13:57:13

从技术到品牌:B2B人形机器人企业的战略咨询全案

在B2B人形机器人行业&#xff0c;企业面临技术提升和品牌建设的双重挑战&#xff0c;因此制定全面的战略咨询显得尤为重要。通过技术改进&#xff0c;企业可以更好满足市场需求&#xff0c;提高产品性能。而品牌建设则帮助提升市场认可度&#xff0c;增强用户信任&#xff0c;构…

作者头像 李华
网站建设 2026/4/5 4:56:43

孤能子视角:关于“活力”与“能力”

引言&#xff1a;一对决定命运的核心张力 在能量-信息孤能子理论描绘的宇宙图景中&#xff0c;每一个存在——从基本粒子到生命体&#xff0c;从思想体系到璀璨文明——都被视为一个“孤能子”&#xff0c;即一个自组织的能量-信息耦合体。它们的演化并非随机&#xff0c;而是…

作者头像 李华
网站建设 2026/4/8 13:13:13

我扔掉了笨重的XXL-JOB,换成基于Nacos的优雅调度方案

写在前面XXL-Job 是国内任务调度领域的标杆项目&#xff0c;许雪里老师的设计兼顾了易用性与功能完整性。但在全面拥抱 Nacos Spring Cloud Alibaba 的架构中&#xff0c;我们发现了一些摩擦&#xff1a;XXL-Job 有自己的注册中心、配置存储&#xff0c;与 Nacos 体系存在重复…

作者头像 李华
网站建设 2026/4/8 8:46:14

又是给freeRTOS 造轮子的一天

关注、星标公众号&#xff0c;直达精彩内容素材来源&#xff1a;技术让梦想更伟大作者&#xff1a;李肖遥FreeRTOS 是一个可裁剪、可剥夺型的多任务内核&#xff0c;而且没有任务数限制&#xff0c;在此之前分析过很多了。这个东西还是很强大的也很实用&#xff0c;参考精选汇总…

作者头像 李华
网站建设 2026/4/4 4:57:45

AI如何提高财报处理效率

每到财报季&#xff0c;证券分析师和财务人员都面临着同样的困境&#xff1a;数千家上市公司密集披露财务数据&#xff0c;传统人工处理一份完整财报往往需要数小时甚至数天。而在这场效率革命中&#xff0c;采用OCRAI双引擎技术的企业&#xff0c;其月度报表处理周期平均缩短了…

作者头像 李华
网站建设 2026/4/3 4:38:28

【好写作AI】跨专业求职:用AI快速补齐你不熟悉的领域知识与术语

当你对目标岗位的描述仿佛在阅读另一门专业的外文文献时&#xff0c;别怕——你只是需要一位随身的“术语翻译官”和“知识架构师”。跨专业求职最现实的困境莫过于此&#xff1a;简历无处下笔&#xff0c;面试张口即错。面对一个陌生领域的岗位描述&#xff08;JD&#xff09;…

作者头像 李华