所以我有一个选择查询。其中一列是可空的varchar列,如果该特定列为NULL,如何将1或0作为位值返回。
我尝试过做这样的事情
select
isnull(nullif(isnull(JavascriptCode, 0),JavascriptCode), 1) as HasJavaScriptCode
from code
但这似乎返回一个字符串值,所以我无法在我的代码中使用。
答案 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语句包装在一个强制转换中,以防止其中一个案例不成一点。我承认它并不令人满意。