Укажите тип данных с псевдонимом столбца в SQL Server 2008

Предположите, что у меня есть следующий оператор 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 заканчивает тем, что был интервала типа, но я хотел бы, чтобы он был бита типа. Как я могу выполнить это?

12
задан Brennan Vincent 28 June 2010 в 21:08
поделиться

3 ответа

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

SELECT CAST (CASE 
               WHEN LOWER(h.outofserv) = 'y' THEN 1 
               ELSE 0 
             END AS BIT) AS OOS 
 FROM HISTORY h
24
ответ дан 2 December 2019 в 05:03
поделиться

вам следует просто используйте CAST (1 как бит) и CAST (0 как бит) вместо 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
4
ответ дан 2 December 2019 в 05:03
поделиться

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

  • upper ()
  • cast ()

    SELECT CAST (CASE
    КОГДА UPPER (History.OutofServ) = 'Y' THEN 1
    Иначе 0 КОНЕЦ КАК БИТЬ) КАК OOS ИЗ истории

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

2
ответ дан 2 December 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: