2016-08-19 5 views
0

データベースから特定の情報にアクセスするSQLクエリを作成しようとしているため、Seleniumを使用してWebページのフォームに対してチェックできます。私が遭遇した問題は、フォームの特定のフィールドを記入する必要がなく、データベースにNULLとして表示されることです。この値がNOT NULLの場合、私はそれをPersonテーブルの主キーとして使用し、その人の詳細情報にアクセスします。値がNULLでない場合にのみ、これらの情報にアクセスできる方法はありますか?これは私が今使用しようとしているものの抜粋です:CASE条件は、SQLのエラーを投げているが、私はQAPreparer.OrgNameにアクセスしようと、正しい構文を得た場合でも、と信じてい利用可能な特定の値に依存するT-SQLの特定の値にアクセスする

SELECT QAPreparer.OrgName as [Client] FROM Folder 
    CASE WHEN @Preparer=NULL 
     THEN left join Person QAPreparer ON dbo.ufGetPrsnPk(dbo.ufgetPrsnName(Folder.PreparerPrsn)) = QAPreparer.PrsnPk 
     ELSE --do nothing 
    END 

PersonがデータベースにNULLとして表示されるとエラーが発生します。

答えて

1

Null値に特殊な構文を使用する必要があります。 variable = nullの代わりにvariable IS NUllと書く必要があります。また、case文の中にjoinを置くことはできませんが、Join文のOn節にcase文を入れることができます.yor SQL問合せは次のように書き直す必要があります。

SELECT qp.OrgName as [Client] 
    From Folder f 
    left join Person qp 
     ON qp.PrsnPk = 
      CASE WHEN @Preparer Is NULL 
       Then dbo.ufGetPrsnPk(dbo.ufgetPrsnName(f.PreparerPrsn)) 
       else null end 
0

あなたは...以下のようなものがあれば、他の条件を使用することができます。..

IF ISNULL(@Preparer,'')='' 
BEGIN 
SELECT QAPreparer.OrgName as [Client] 
FROM Folder 
    LEFT JOIN Person QAPreparer 
     ON dbo.ufGetPrsnPk(dbo.ufgetPrsnName(Folder.PreparerPrsn)) = QAPreparer.PrsnPk 
END 
ELSE 
BEGIN 
    SELECT QAPreparer.OrgName as [Client] FROM Folder 
END 
関連する問題