SQL SELECT - Return boolean based on condition

后端 未结 5 1053
难免孤独
难免孤独 2020-12-30 23:10

Essentially I\'m trying to do this

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

Where 5 is an int r

相关标签:
5条回答
  • 2020-12-30 23:23

    You need a case statement, like this:

    select  u.Hostname,
            u.IsCustom,
            convert(bit, case when u.Status = 5 then 1 else 0 end) as IsActive
    
    from    SiteUrlMappings u
    

    bit is as close to true boolean as you can get in SQL Server

    0 讨论(0)
  • 2020-12-30 23:25

    You don't need a CASE expression
    Just leverage how bit works: all non-zero values give 1 when cast to bit

    SELECT
        u.Hostname,
        u.IsCustom,
        ~ CAST((u.Status - 5) AS bit) AS IsActive
    from    SiteUrlMappings u
    
    0 讨论(0)
  • 2020-12-30 23:37

    Try this:

    SELECT
        u.Hostname,
        u.IsCustom,
        CASE
    WHEN u.Status = 5 THEN
        1
    ELSE
        0
    END AS IsActive
    from    SiteUrlMappings u
    
    0 讨论(0)
  • 2020-12-30 23:38

    SQL Server doesn't have a boolean datatype. The closest is bit

    SELECT u.Hostname,
           u.IsCustom,
           CAST(CASE
                  WHEN u.Status = 5 THEN 1
                  ELSE 0
                END AS BIT) AS IsActive
    FROM   SiteUrlMappings u  
    
    0 讨论(0)
  • 2020-12-30 23:38

    You can use CASE ... WHEN syntax instead.

    0 讨论(0)
提交回复
热议问题