2016-03-29 86 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 ...