congfu 发表于 2012-07-23 14:05

如何去掉存在空值的行

通过如下语句,能找出四行为空的记录,详情如下:
select sypxx01,
               sypph01,
               (select sgfdw01 from yygla10 where sypjy01 = yygla11.sypjy01) as sypkw01,
               0 as nypkc01,
               Sjymx03 as SYPPH02,
               Djymx07 as dypph03,
               Njymx06 as nypph04
            from yygla11
         where sypjy01 like 'BK%'
             and sypxx01 > '0'
             and sypph01 > '0'   
             order by sypkw01 desc

通过如下语句:select * from yygla10 where sgfdw01 is null
却找不到任何数据。详情如下:


谁能告诉我,这是什么原因呢,要如何调整,才能显示sypkw01的数据。

水平展开 发表于 2012-07-24 23:21

对于那四条记录,并不是这个项目的值为空,而是yygla10里面不存在匹配的纪录。。

水平展开 发表于 2012-07-25 08:46

sgfdw01 取得的条件,写到where里,以内连接得方式取得,就能把那四个空白行去掉了。
但是业务上是否确实需要如此,还请确认明确。

水平展开 发表于 2012-07-25 08:53

写法大致如下
select y11.sypxx01,
               y11.sypph01 as sypph01,
               y10.sgfdw01 as sypkw01
               ……
            from yygla10 y10, yygla11 y11
         where y10.sypjy01 = y11.sypjy01
             and y11.sypjy01 like 'BK%'
             and y11.sypxx01 > '0'
             and y11.sypph01 > '0'   
             order by sypkw01 desc

moon38sun 发表于 2012-07-26 08:50

根据你提出的问题,建议重点了解一下内连接,左外连接,右外连接,全外连接的异同。
可能会有帮助。

Minsic 发表于 2012-07-26 09:14

确定那是null值?不是空格之类的字符?

水平展开 发表于 2012-07-27 08:59

应该不是空格,他用的这个工具,显示null和空格时候的背景色好像是不一样的。

congfu 发表于 2012-07-30 13:28

多谢"水平展开"
你的回答很对
确实是匹配问题,后来把匹配不上的找出来,删除,问题就解决了。

congfu 发表于 2012-07-30 13:29

你真厉害,一眼就看出了有不匹配的问题。
问题解决了,呵呵,谢谢


   

congfu 发表于 2012-07-30 13:31

多谢你的建议,我只是当时没有找到是什么原因,并不是不知道你提的
经验不足啊,不过你的回答要转个弯,不过也间接说明了什么原因


   
页: [1] 2
查看完整版本: 如何去掉存在空值的行