如何在sql server中检查位变量是真还是假?

15 sql-server

我有一个简单的查询,我想要做的就是检查这个变量是真还是假,并且由于某种原因它总是返回false.

DECLARE @CappedIFCheck BIT
SET @CappedIFCheck = (SELECT distinct 1
                      FROM mytable
                      WHERE 1=1);

select @CappedIFCheck
     IF (@CappedIFCheck = 'True')
        BEGIN
           SELECT 'true';
        END
     ELSE
        BEGIN
           SELECT 'false';
        END
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 19

bitSQL Server中的变量可以有三个值.0,1NULL.

字符串'true''false'映射分别10.

您的代码未考虑第三个可能的值.如果mytable为空,则变量不会被初始化并具有值NULL.

SELECT CASE @CappedIFCheck
         WHEN 'True' THEN 'true'
         WHEN 'False' THEN 'false'
         ELSE 'unknown'
       END 
Run Code Online (Sandbox Code Playgroud)

我不确定你的代码究竟在做什么,但这是一种非常低效的处理事情的方式.你应该使用EXISTS.


JSR*_*JSR 13

在比较Sql Server中的BIT值时,请使用文字值1和0而不是"True"和"False".

IF(@CappedIFCheck = 1)......