SQL Filter SELECT语句

时间:2016-03-29 15:59:25

标签: sql sql-server tsql case

我需要过滤我的select语句,只抓取一个值是位值为true。例如

 DECLARE
 @Value AS NVARCHAR(20) = 'Some Value'
 @BIT AS BIT = 1,
 @Stuff AS NVARCHAR(20) = 'Stuff'

 SELECT 
     @Stuff,
     IF @BIT = 1 BEGIN @Value END ELSE BEGIN '' END

基本上这样的东西。我只想选择值,如果它是真的。我有多个复选框,如果用户选择其中一个复选框,数据应该只返回该数据,因此我使用位来跟踪是否检查了它。提前致谢

2 个答案:

答案 0 :(得分:1)

使用CASE而不是IF

SELECT 
    @Stuff,
    CASE WHEN @BIT = 1 THEN @Value ELSE '' END

CASE @BIT WHEN 1 THEN @Value ELSE '' END

答案 1 :(得分:0)

有点不清楚你要做什么,所以我会给你几种方法:

如果要限制select语句,可以执行以下操作:

SELECT ...
FROM ...
WHERE myBitField = 1

或者,如果您的位字段是传入的变量,您可以执行以下操作:

SELECT ...
FROM ...
WHERE myBitField = @BIT

如果您不想限制选择结果,可以使用案例陈述:

SELECT CASE WHEN @BIT = 1 THEN @Value ELSE '' END as BitResult
FROM ...