当语句中的列值为null时,如何从select语句返回位值

时间:2015-04-28 17:51:25

标签: sql-server string null bit

所以我有一个选择查询。其中一列是可空的varchar列,如果该特定列为NULL,如何将1或0作为位值返回。

我尝试过做这样的事情

select
    isnull(nullif(isnull(JavascriptCode, 0),JavascriptCode), 1) as HasJavaScriptCode
from code

但这似乎返回一个字符串值,所以我无法在我的代码中使用。

3 个答案:

答案 0 :(得分:2)

使用CASE

SELECT CASE WHEN JavascriptCode IS NULL THEN 0 ELSE 1 END As HasJavaScriptCode
FROM code

答案 1 :(得分:1)

CASE表达式与CAST

一起使用
select
    case when JavascriptCode is null 
         then cast(0 as bit) 
         else cast(1 as bit) end as HasJavaScriptCode
from code

答案 2 :(得分:0)

看起来每个人都同意你应该使用案例陈述。我想指出你应该清楚地定义列是否可能包含空字符串以及返回1或0时可能意味着什么。一个解决方案可能如下所示:

select
  cast(
    case when JavascriptCode is null or len(JavascriptCode) = 0
      then 0
      else 1
    end
    as bit
  ) as HasJavascriptCode
from code

您可以通过多种方式编写此类声明的另一种变体。这个简单地将case语句包装在一个强制转换中,以防止其中一个案例不成一点。我承认它并不令人满意。