2009-08-04 16 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') 

最初の1秒1は私が間違って何83

を与えながら、私に182行を与えているを持っていますクエリ?

答えて

0

2番目のクエリは、NVL()のために、教師用テーブルに対してnullを返すことはないため、データに応じてさらに多くのレコードを返すことができます。あなたは ""

+0

は、SELECT句の前に評価されていないWHERE句です...別名NVLは、私がコメントするので、誰かがこれらのクエリを編集したと思う – gbn

+0

「teachernumberがnullでない」の後にevalautedされます。もともとwhere句のNVLはありませんでしたか? – Jay

+0

NVLを削除してwhere節に "TeacherNumber is not null"を保持しても、2番目のクエリは83行、1行目は182行を返します。 – Mithil

0

だけの思考...

  • 同じサーバを持つNULLを置き換えるため

    は基本的にヒットれることは決してありません "とteacherloginidはnullではありませんか"?つまり、リンク先のサーバーのターゲットまたは資格情報が異なる場合、異なる「教師」テーブルを読んでいる場合

  • リンクされたSQLステートメントを実際にリンクサーバー(ローカルではない)で実行すると、

関連する問題