基本上我正在尝试这样做
select u.Hostname, u.IsCustom, (u.Status = 5) as IsActive
from SiteUrlMappings u
其中5是表示“活动”网址的int。
当然这不起作用,我的sql就像一把旧螺丝刀一样生锈。
答案 0 :(得分:27)
您不需要CASE表达式
只需利用bit
的工作原理:当转换为位
SELECT
u.Hostname,
u.IsCustom,
~ CAST((u.Status - 5) AS bit) AS IsActive
from SiteUrlMappings u
答案 1 :(得分:24)
SQL Server没有布尔数据类型。最接近的是bit
SELECT u.Hostname,
u.IsCustom,
CAST(CASE
WHEN u.Status = 5 THEN 1
ELSE 0
END AS BIT) AS IsActive
FROM SiteUrlMappings u
答案 2 :(得分:6)
您需要case
语句,如下所示:
select u.Hostname,
u.IsCustom,
convert(bit, case when u.Status = 5 then 1 else 0 end) as IsActive
from SiteUrlMappings u
bit
与SQL Server
答案 3 :(得分:4)
试试这个:
SELECT
u.Hostname,
u.IsCustom,
CASE
WHEN u.Status = 5 THEN
1
ELSE
0
END AS IsActive
from SiteUrlMappings u
答案 4 :(得分:0)
您可以改用CASE ... WHEN语法。