/=/ 在 Netezza 中是啥意思?

Posted

技术标签:

【中文标题】/=/ 在 Netezza 中是啥意思?【英文标题】:What does /=/ mean in Netezza?/=/ 在 Netezza 中是什么意思? 【发布时间】:2018-11-30 19:02:22 【问题描述】:

我正在将一些来自 Netezza 的视图转换为另一个 DBMS。

我一直遇到这个运算符/=/,我想它是某种相等运算符。

但是,我搜索了这个网站and the official docs,但我找不到这个运算符如何工作的定义。

/=/ 在 Netezza 中是什么意思?

编辑: 我在case 语句中看到它。

这是一个例子:

CASE WHEN (A_TABLE.A_COL /=/ 'ONE'::VARCHAR) THEN 'ONE'::VARCHAR 
WHEN (A_TABLE.A_COL /=/ 'TWO'::VARCHAR) THEN 'TWO'::VARCHAR 
WHEN (A_TABLE.A_COL /=/ 'THREE'::VARCHAR) THEN 'THREE'::VARCHAR 
WHEN (A_TABLE.A_COL /=/ 'FOUR'::VARCHAR) THEN 'FOUR'::VARCHAR 
ELSE 'OTHER'::VARCHAR END

【问题讨论】:

你能用那个操作符发布一整行代码吗? 示例已添加,谢谢! 仅在case语句中? A_COL 的其他值是否不是一、二、三、四? 它似乎只出现在 case 语句中。我还没有访问数据的权限,只是一个空的 DDL。不过,我会发布更多信息。 是的,我在任何文档中都找不到该运算符。我唯一的想法是它可能在比较值和类型,但我找不到支持它的文档 【参考方案1】:

这是一个非常强大的功能,经常用于 JOIN 语句和 CASE 中。 它是一个运算符,告诉数据库将一个值中的 NULL 与另一个值中的 NULL 匹配。通常,如果参数之一为 NULL,则所有函数和运算符都返回 NULL,并且由于 NULL 不是 TRUE,您将找不到匹配项。

围绕 NULL 的整个三态逻辑有时可能会令人困惑,并且显然是在数学家的头脑中发明出来的,但这个特殊的 /=/ 运算符的行为很容易让你陷入困境。

【讨论】:

这对我来说很有意义,但我无法在任何官方文档中找到此信息。知道如何搜索它吗?搜索运算符本身似乎不起作用。感谢发帖! 我在谷歌上搜索了 15 分钟,但 /=/ 或多或少被 google 忽略了...下次见到同事我会问他... 如果你得到查询计划,你会看到连接语句是如何为select * from A join B on (A.COL=B.COL or (A.COL ISNULL and B.COL ISNULL)) 翻译成 ---> spu HashJoinNode numSlicesEst=1 -- (TBL_B.COL /=/ TBL_A.COL) 有趣,我不知道它在计划中重写了 TO /=/。我想从性能的角度来看这很有意义,因为我怀疑它是在 FPGA 中实现的

以上是关于/=/ 在 Netezza 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

查找 Netezza 服务器上的所有数据库名称

“?”是啥意思?在 Erlang 中是啥意思? [复制]

“||”是啥意思在 var 语句中是啥意思? [复制]

“内容”是啥意思:在招摇/openapi“响应”中是啥意思:

& 是啥意思。 (& 点)在 Ruby 中是啥意思?

问号和点运算符是啥意思?在 C# 6.0 中是啥意思?