SQL筛选器选择语句

SQL筛选器选择语句,sql,sql-server,tsql,case,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 基本上是这样的。我只想在值为true时选择该值。我有多个复选框,只有当用户

我需要过滤我的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

基本上是这样的。我只想在值为true时选择该值。我有多个复选框,只有当用户选择其中一个复选框时,数据才应该拉回数据,所以我使用位来跟踪它是否被选中。提前感谢

使用
案例
如果

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


现在有点不清楚您想做什么,因此我将向您介绍几种方法:

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

SELECT ...
FROM ...
WHERE myBitField = 1
SELECT ...
FROM ...
WHERE myBitField = @BIT
或者,如果您的位字段是传入的变量,则可以执行以下操作:

SELECT ...
FROM ...
WHERE myBitField = 1
SELECT ...
FROM ...
WHERE myBitField = @BIT
如果不想限制select结果,可以使用case语句:

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

无论应用程序是否有这些复选框,代码都比查询更好地处理这个问题。谢谢Alex,在这种情况下应该可以这样做。我正在使用这些数据构建一个报告,因此,如果有一个无名列,它应该忽略它。