2009-08-04 93 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語句會爲您提供什麼?

相關問題