7

ブール値が true かどうかを確認してから、使用する条件を WHERE 句で決定します。

ブール変数が @checkbool であるとします。

SELECT *
FROM TableA A
WHERE
    --if @checkbool is true, run this
    A.Id = 123

    --if @checkbool is false, run this
    A.Id <> 123

条件を否定する方法はありますか?C++ と同様に、if !(条件) を実行できます。

そうでない場合、この問題を解決する最善の方法は何ですか?

ありがとうございました!

4

5 に答える 5

3

ここに1つの解決策があります:

IF @Checkbool = 1
     SELECT * FROM Table A WHERE A.Id = 123
ELSE
     SELECT * FROM Table A WHERE A.Id <> 123

WHERE 句だけを使用した別の例を次に示します。

SELECT * 
FROM Table A 
WHERE
     (@Checkbool = 1 AND A.Id = 123)
     OR
     (@Checkbool = 0 AND A.Id <> 123)

where 句に入れるものはすべて、式の形式にする必要があります。したがって、この場合の解決策は、条件を式の形式で記述することです。

お役に立てれば。:)

于 2013-08-08T20:42:14.147 に答える
2
select *
from TableA A
where
    (@checkbool = 1 and A.Id = 123) or
    (@checkbool = 0 and A.Id <> 123)
于 2013-08-08T20:17:17.207 に答える
1

checkbool が coumn の場合、次のようになります (適切な SQL 構文ではありません)。

WHERE (A.ID=123 AND A.checkbool=TRUE) OR (A.ID!=123 AND A.checkbool=TRUE)

checkbool がクローンでない場合、A.checkbool を checkbool の値に置き換えます。

ここに正しいSQLがあります

WHERE ((checkbool) AND (A.Id =  123))OR ((NOT checkbool) AND (A.Id <> 123))
于 2013-08-08T20:14:58.960 に答える