Ответ 1
Вам не нужно выражение CASE
Просто используйте, как работает bit
: все ненулевые значения дают 1 при передаче в бит
SELECT
u.Hostname,
u.IsCustom,
~ CAST((u.Status - 5) AS bit) AS IsActive
from SiteUrlMappings u
По существу, я пытаюсь это сделать
select u.Hostname, u.IsCustom, (u.Status = 5) as IsActive
from SiteUrlMappings u
Где 5 - int, представляющий "активный" 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... WHEN.