0

次の条件付きSQLステートメントがありますが、これは機能します..しかし、if部分に空のステートメントがあります...ロジックでif部分を使用できるように、それを否定したい

    IF @WorkPrescribed = 1 and (@DefectNo1 = @WorkPrescribedDefectNo or @DefectNo2 = @WorkPrescribedDefectNo or @DefectNo3 = @WorkPrescribedDefectNo or @DefectNo4 = @WorkPrescribedDefectNo)
  BEGIN
            -- I don't want this at all.. only reason I have this is so I can have the else condition
  END
    else
        BEGIN
             --My current logic is all here
        END

だから私は自分が持っているものを否定する方法を知りたいだけなので、else を使用するのではなく、If だけですべてを行うことができます

ありがとう

4

5 に答える 5

4

おそらく単純に

IF NOT(@WorkPrescribed = 1 and (@DefectNo1 = @WorkPrescribedDefectNo or @DefectNo2 = @WorkPrescribedDefectNo or @DefectNo3 = @WorkPrescribedDefectNo or @DefectNo4 = @WorkPrescribedDefectNo))
于 2013-09-30T09:42:31.637 に答える
1

で囲んでロジックを単純に否定するNOT()か、次のように書くことができます。

IF @WorkPrescribed != 1 or (@DefectNo1 != @WorkPrescribedDefectNo and @DefectNo2 != @WorkPrescribedDefectNo and @DefectNo3 != @WorkPrescribedDefectNo and @DefectNo4 != @WorkPrescribedDefectNo)
    BEGIN
         --My current logic is all here
    END
于 2013-09-30T09:42:08.893 に答える
0
IF @WorkPrescribed <> 1 
or @WorkPrescribedDefectNo not in (@DefectNo1, @DefectNo2, @DefectNo3, @DefectNo4)
BEGIN
 -- code
END
于 2013-09-30T11:01:44.517 に答える
0

NOT否定するステートメントを「囲む」だけです。

IF NOT (@WorkPrescribed = 1 and (@DefectNo1 = @WorkPrescribedDefectNo or @DefectNo2 = @WorkPrescribedDefectNo or @DefectNo3 = @WorkPrescribedDefectNo or @DefectNo4 = @WorkPrescribedDefectNo))
  BEGIN
            -- I don't want this at all.. only reason I have this is so I can have the else condition
  END
    else
        BEGIN
             --My current logic is all here
        END
于 2013-09-30T09:42:09.943 に答える
0

演算子IF @WorkPrescribed <> 1の代わりに使用できます=

この投稿を確認してください。 TSQL で等しくない場合は != または <> を使用する必要がありますか?

またはあなたが使用することができます

IF NOT @WorkPrescribed = 1 and 
(@DefectNo1 = @WorkPrescribedDefectNo or 
 @DefectNo2 = @WorkPrescribedDefectNo or 
 @DefectNo3 = @WorkPrescribedDefectNo or 
 @DefectNo4 = @WorkPrescribedDefectNo)
于 2013-09-30T09:43:27.967 に答える