/=/ 在 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 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章