2016-03-29 85 views
1

我需要筛选我的select语句来只抓取一个值是有点值是真的。例如SQL筛选器SELECT语句

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 

基本上是这样的。我只想选择它的值是否为真。我有多个复选框,如果用户选择其中一个复选框,则数据应该仅将该数据拉回,所以我使用位来跟踪它是否被选中。在此先感谢

+0

任何具有这些复选框的应用程序的代码都是处理此问题的好地方,而不是查询。 –

回答

1

使用CASEIF

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

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

感谢亚历克斯,应该在这种情况下工作。我正在使用这些数据来构建一个报告,所以如果有一个没有名称的列,它应该忽略它。 – Holmes

0

这是一个有点不清楚你正在尝试做的,所以我会给你几种方法:

如果你限制你的选择陈述,你可以这样做:

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

,或者,如果你的位字段是真实传递一个变量,你可以这样做:

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

如果你不想限制你的选择的结果,你可以使用一个case语句:

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