基本上我正在努力做到这一点
select u.Hostname, u.IsCustom, (u.Status = 5) as IsActive
from SiteUrlMappings u
Run Code Online (Sandbox Code Playgroud)
其中5是表示"活动"URL的int.
当然这不起作用,我的sql就像一把旧螺丝刀一样生锈.
gbn*_*gbn 30
您不需要CASE表达式
只是利用如何bit工作:当转换为位时,所有非零值都给出1
SELECT
u.Hostname,
u.IsCustom,
~ CAST((u.Status - 5) AS bit) AS IsActive
from SiteUrlMappings u
Run Code Online (Sandbox Code Playgroud)
Mar*_*ith 25
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
Run Code Online (Sandbox Code Playgroud)
你需要一个case声明,如下所示:
select u.Hostname,
u.IsCustom,
convert(bit, case when u.Status = 5 then 1 else 0 end) as IsActive
from SiteUrlMappings u
Run Code Online (Sandbox Code Playgroud)
bit 尽可能接近真正的布尔值,因为您可以在SQL Server中获得
尝试这个:
SELECT
u.Hostname,
u.IsCustom,
CASE
WHEN u.Status = 5 THEN
1
ELSE
0
END AS IsActive
from SiteUrlMappings u
Run Code Online (Sandbox Code Playgroud)