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
|
saber · MySql查询没有结果 2 年前 |
pigfox · Mysql空表联接失败 6 年前 |
Jaa Zaib · 返回空值的大小写表达式 6 年前 |
Robert Vogelezang · 为什么null未写入输出窗口? 6 年前 |
l. schwarz · sql长度(null) 6 年前 |
ÇAÄrı Keskin · SQL-删除(消除)没有数据的列 6 年前 |
Dorkymon · 使用系统在输出处获取null。出来打印F 6 年前 |