Подтвердить что ты не робот

SQL SELECT - возвращает логическое значение на основе условия

По существу, я пытаюсь это сделать

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

Где 5 - int, представляющий "активный" URL.

Конечно, это не сработает, и мой sql ржавый, как старая отвертка.

4b9b3361

Ответ 1

Вам не нужно выражение CASE
Просто используйте, как работает bit: все ненулевые значения дают 1 при передаче в бит

SELECT
    u.Hostname,
    u.IsCustom,
    ~ CAST((u.Status - 5) AS bit) AS IsActive
from    SiteUrlMappings u

Ответ 2

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  

Ответ 3

Вам нужен оператор 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

Ответ 4

Попробуйте следующее:

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

Ответ 5

Вместо этого можно использовать CASE... WHEN.