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