我需要帮助编写条件where子句.这是我的情况:
我有一个值可以决定在select语句中返回哪些行.如果值为true,我需要返回import_id列不为空的行,如果为false,那么我想要import_id列为空的行.
我尝试这样的一个查询(下面)似乎不起作用,最好的方法是什么?
DECLARE @imported BIT SELECT id,import_id,name FROM Foo WHERE (@imported = 1 AND import_id IS NOT NULL) AND (@imported = 0 AND import_is IS NULL)
谢谢.
解决方法
将AND更改为OR
DECLARE @imported BIT SELECT id,name FROM Foo WHERE (@imported = 1 AND import_id IS NOT NULL) OR (@imported = 0 AND import_is IS NULL)
分解您的原始声明
你基本写了
@imported = 1 AND import_id IS NOT NULL AND @imported = 0 AND import_is IS NULL
相当于
@imported = 1 AND @imported = 0 AND import_id IS NOT NULL AND import_is IS NULL
什么导致两对完全否定对方的条款