SQL HELP – 基于BIT变量的条件where子句 – SQL Server

前端之家收集整理的这篇文章主要介绍了SQL HELP – 基于BIT变量的条件where子句 – SQL Server前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要帮助编写条件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

什么导致两对完全否定对方的条款

猜你在找的MsSQL相关文章