SQL SELECT - возвращает логическое значение в зависимости от условия - PullRequest
23 голосов
/ 15 октября 2011

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

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

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

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

Ответы [ 5 ]

27 голосов
/ 15 октября 2011

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

SELECT
    u.Hostname,
    u.IsCustom,
    ~ CAST((u.Status - 5) AS bit) AS IsActive
from    SiteUrlMappings u
24 голосов
/ 15 октября 2011

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  
7 голосов
/ 15 октября 2011

Вам нужен оператор 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 голосов
/ 15 октября 2011

Попробуйте это:

SELECT
    u.Hostname,
    u.IsCustom,
    CASE
WHEN u.Status = 5 THEN
    1
ELSE
    0
END AS IsActive
from    SiteUrlMappings u
0 голосов
/ 15 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...