Укажите тип данных с псевдонимом столбца в SQL Server 2008 - PullRequest
12 голосов
/ 29 июня 2010

Представьте, что у меня есть следующий оператор SELECT в представлении (SQL Server 2008):

SELECT (SELECT CASE 
                 WHEN HISTORY.OUTOFSERV = 'Y' OR HISTORY.OUTOFSERV = 'y' THEN 1 
                 ELSE 0 
               END) AS OOS 
  FROM HISTORY

Столбец OOS заканчивается типом int, но я бы хотел, чтобы он был битовый. Как мне это сделать?

Ответы [ 3 ]

24 голосов
/ 29 июня 2010

Используйте CAST / CONVERT , чтобы явно определить тип данных:

SELECT CAST (CASE 
               WHEN LOWER(h.outofserv) = 'y' THEN 1 
               ELSE 0 
             END AS BIT) AS OOS 
 FROM HISTORY h
4 голосов
/ 29 июня 2010

Вы должны просто использовать CAST(1 as bit) и CAST(0 as bit) вместо 1 и 0:

SELECT (CASE WHEN HISTORY.OUTOFSERV = 'Y' OR HISTORY.OUTOFSERV = 'y'
             THEN CAST(1 AS bit) 
             ELSE CAST(0 AS bit) 
        END) AS OOS 
FROM HISTORY
2 голосов
/ 29 июня 2010

Вот способ получить желаемый вывод типа данных BIT, и с немного более чистым кодом, используя:

  • верхняя ()
  • литье ()

    ВЫБЕРИТЕ CAST (CASE
    WHEN UPPER (History.OutofServ) = 'Y' THEN 1
    ELSE 0 END AS BIT) AS OOS ИЗ истории

Надеюсь, это поможет.

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