2009-08-04 61 views
1

我有2个类似的查询OPENQUERY给出不同的结果

select * 
from openquery(powerschool, 
       'select * 
       from TEACHERS 
       where teachernumber is not null 
        and schoolid=''1050'' 
        and teacherloginid is not null 
       order by teachernumber') 

SELECT * 
from openquery(powerschool, 
       'SELECT NVL(teachernumber,'''') 
       from TEACHERS 
       where teachernumber is not null 
       and schoolid=''1050'' 
       and teacherloginid is not null 
       order by teachernumber') 

第一个是给我182行,而第二个给了我83

这有什么错查询?

回答

0

第二个查询永远不会因为NVL()而返回教师表的空值,因此它可以根据数据返回更多的记录。

基本上是因为你替换为空值“”

+0

是SELECT子句前未评估WHERE子句...又名NVL之后“teachernumber不为空” – gbn 2009-08-05 04:18:25

0

只是想法...

  • 同一台服务器“和teacherloginid不为空”永远不会被打?也就是说,链接的服务器在目标或凭证方面有所不同o您正在阅读不同的“教师”表

  • 什么是在链接的服务器上(而不是本地)运行两个链接的SQL语句会为您提供什么?

相关问题