关于Oracle左联 left join的困惑

毛a毛 2013-08-26 07:48:51
今天在查询时用到了左联,发现一个奇怪的现象,比如有一个表TabA 里边有两列 col1、col2 并且B中有记录,TabB表为空, 当我用如下sql语句时 可以取出A中全部记录:
select A.* from TabA A left join
(
select TabB.* from TabB where TabB.bh=' '
) B on A.col1=B.bh

但若是用如下语句则取出为空,即不是A中的全部记录:
select A.* from TabA A left join
(
select TabB.* from TabB where TabB.bh=''
) B on A.col1=B.bh
第一个sql语句跟第二个sql语句区别就在于 bh='' 和 bh=' ' ,那位大神给帮忙解决一下。。。
...全文
369 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
善若止水 2014-03-23
  • 打赏
  • 举报
回复
对于楼主的问题,我保持怀疑的态度
abin30 2014-03-23
  • 打赏
  • 举报
回复
估计楼上是没有看明白楼主的意思吧,楼上是说 left join 结果会因为右边链接条件不一致而改变。。 但是我没有模拟出来楼主的情况,看是不是什么地方敲错了。。
WSZHAO_SELECT 2014-03-21
  • 打赏
  • 举报
回复



SQL> select * from test where username is null;

USERNAME                                             USERNUM
-------------------- ---------------------------------------
                                                         234

SQL> select * from test where username ='';

USERNAME                                             USERNUM
-------------------- ---------------------------------------

SQL> select * from test where username=' ';

USERNAME                                             USERNUM
-------------------- ---------------------------------------
在oracle 中判断为空就用is null;
chenbest111 2013-08-26
  • 打赏
  • 举报
回复
改成TabB.bh is null试试
chenbest111 2013-08-26
  • 打赏
  • 举报
回复
在字符串字段中'' 就是null

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧