奇怪的SELECT语句

时间:2014-07-18 12:09:48

标签: postgresql postgresql-9.3

有人知道在where子句中! =之间有空格是什么意思吗?

例如:

Select ColA
From TableA
Where ColA.ID ! = ColB.ID ?

在Postgres中并不是完全'不平等'的运营商,我在互联网上找不到对它的引用。

2 个答案:

答案 0 :(得分:2)

!感叹号是阶乘的运算符。所以表达式

ColA.ID ! = ColB.ID

评估为

(ColA.ID!) = ColB.ID

表示:“其中ColA.ID的阶乘等于ColB.ID的值

然而,我怀疑某人实际上打算写ColA.ID != ColB.ID这是“不等于”运算符的可接受但非标准版本,并且相当于ColA.ID <> ColB.ID

符号ColA.ID建议(正如康斯坦丁在他的回答中提到的)这两列基于用户定义的类型,这些类型具有自己的属性(除非您在尝试混淆真实时只是犯了一个错误查询)

答案 1 :(得分:0)

看起来ColA和ColB属于user defined type。在Postgres中,您可以定义复合数据类型,其中一个值包含多个字段。因此,在您的示例中,ColA.ID只是存储在表ID的列ColA中的值的TableA字段。

有一些示例article供您进一步帮助。

P.S。我认为! =只是一个印刷错误。它应该不是等于运算符