|
1
47
也许这会管用,但我从未真正尝试过:
|
|
|
2
6
由于OR,显然效率不高,但除非有一个保留值,您可以将空值映射到两侧,而不会产生歧义或折叠,这是您所能做的最好的事情(如果有,为什么在您的设计中甚至允许空值…) |
|
|
3
3
您不能做得更好,但是您拥有的连接不会以任何方式进行实际的“连接”(T1.SOMECOL和T2.SOMECOL之间不会有任何关联,除非它们对该列都有空值)。基本上,这意味着您将无法使用null上的连接来查看行是否匹配。 NULL永远不等于另一个NULL。一个未知值的东西怎么能与另一个未知值的东西相等? |
|
4
3
没有证件,所以走这条路要小心。 |
|
|
5
3
简单,利用
您唯一需要担心的是,‘magic string’不能在两个表中的join字段的合法值中。 |
|
|
6
3
它不会生成最可读的代码,但可能仍然比
|
|
|
7
1
如果值为null,是否确实希望能够联接表?你不能在连接谓词中排除可能的空值吗?我发现很难发现两个表中的行可以由空值关联。如果table1.colu_a中有100个空值,table2.colu_b中有100个空值,那么仅对于带有空值的行,将返回10000行。听起来不对。 然而,你确实说过你需要它。我可以建议将空列合并成一个较小的字符串,因为字符比较相对昂贵。更好的是,如果列中的数据是文本,则将空值合并为整数。然后,您可以进行非常快速的“比较”,并且不太可能与现有数据发生冲突。 |
|
|
8
0
把它扔出去——有没有办法把这些空值合并成一个已知值,比如一个空字符串?不太了解您的表是如何布置的,这意味着我无法确定您是否会以这种方式失去意义——例如,空字符串表示“用户拒绝输入电话号码”,空字符串表示“我们忘了询问”,或者诸如此类? 我敢肯定,这很可能是不可能的,但如果是,您将有已知的值进行比较,并且您可以通过这种方式获得合法的连接。 |
|
|
9
0
这与检查两列中是否存在空值不一样吗?
|
|
|
10
0
为什么不这样做呢: 在nvl(T1.SOMECOL,'null')上从T1连接T2选择*=
我不知道你为什么要用UUID。您可以使用列中不存在的任何字符串,例如字符串“null”,以降低内存占用。以及使用
|
|
|
11
0
您可以尝试使用以下查询。
|
|
|
12
0
我相信您仍然可以使用nvl()进行加入:
但您需要在col1列上添加基于函数的索引
索引应该显著提高NVL(..)上的连接速度。 |
|
13
0
这不是最好的方法。如果TA.COL1保留值0,而TB.COL2为空,它将加入这些记录,这是不正确的。
|
|
|
14
-2
|
|
|
maddy · 如何根据oracle SQL中的某一列值进行排名 3 年前 |
|
|
kiric8494 · 显示以元音开头和结尾的城市名称 4 年前 |
|
|
Franz Biberkopf · Oracle:组合子查询和聚合函数 4 年前 |
|
|
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 4 年前 |
|
|
Arifullah · 如何从oracle中的列中删除特定的初始字符? 4 年前 |
|
|
Anar · Oracle SQL用户定义函数 4 年前 |
|
|
user1312312 · 如何为一组表编写通用触发器? 4 年前 |