「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」
最近在项目sql中频频使用到了不等于的判断条件,试了很多个不等于的运算符,都没有办法解决问题。
一、尝试使用多个不同的运算符进行判断
在网上搜索资料得出:
-
<>按照资料来看,
<>属于早期的SQL不等于符号,推荐使用。 -
! ==和! =是用来判断具体的值,无法判断NULL值。 -
is notis 和 is not可以用来判断NULL值。
某些资料指出:
-
用PostgreSQL操作符不等于<>时,还必须加上OR the_column IS NULL
select column1,column2,column3... from table_name where column4 <> '1' or column4 IS NULL -
单纯的不等于可以用!=或者<>表示,但是查询字段不等于的情况时候,需要加上字段不为空
二、问题的源头
在我一直尝试的时候,出现了一条错误提醒了我问题的源头在什么地方,具体不太记得了,提示的大概意思是:不能拿BigInt与Integer进行比较。
因此,如果遇到pgsql的不等于或等于的问题,可以先将两边的变量类型转换为一致的类型再进行对比,不同类型的数据始终是不同的,即不等于的表达式永远不会等于true。
偶尔可以判断到sql中的一些不等于带来的错误,可能是因为两者类型就是不一致的所以导致无法判断,可以将两边的数值强制转换成一致的类型再进行比较,或者是调查一下这段sql字段是从哪些表取得的,查看表结构也可得。
三、判断字段类型的函数
用ISNUMERIC函数可以确定表达式是否为一个有效的数字类型。
- 语法为:
ISNUMERIC ( expression ) - 参数:expression
- 返回类型:int
- 解释:当输入表达式得数为一个有效的整数、浮点数、decimal类型,那么ISNUMERIC返回1,否则返回0,返回1可确保expresssion转换为上述数字类型中的一种。