我需要过滤我的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
基本上这样的东西。我只想选择值,如果它是真的。我有多个复选框,如果用户选择其中一个复选框,数据应该只返回该数据,因此我使用位来跟踪是否检查了它。提前致谢
答案 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 ...