SQL SELECT—根据条件返回布尔值



我要做的就是

select  u.Hostname, u.IsCustom, (u.Status = 5) as IsActive
from    SiteUrlMappings u

其中5为int型,表示"Active"url。

当然这行不通,我的sql就像一把旧螺丝刀一样生锈了。

不需要CASE表达式
只要利用bit的工作原理:当转换为位

时,所有非零值都给出1。
SELECT
    u.Hostname,
    u.IsCustom,
    ~ CAST((u.Status = 5) AS bit) AS IsActive
from    SiteUrlMappings u

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  

您需要一个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

中最接近真实的布尔值

试试这个:

SELECT
    u.Hostname,
    u.IsCustom,
    CASE
WHEN u.Status = 5 THEN
    1
ELSE
    0
END AS IsActive
from    SiteUrlMappings u

您可以使用CASE…

最新更新