2010-03-27 19 views
5

У меня есть таблица с столбцом Direct типа char (1). Это значения либо «Y», либо «N» или «NULL». Я создаю представление, и я хочу, чтобы значение было преобразовано в 0 или 1 бит типа. Сейчас это тип INT. Как мне это сделать?Преобразование из 'Y' или 'N' в бит

Ниже приводится код:

CASE WHEN Direct = 'Y' THEN (SELECT 1) 
WHEN Direct <> 'Y' THEN (SELECT 0) END AS DirectDebit 

EDIT: Как я могу убедиться, что тип столбца типа BIT?

+0

вы хотите NULL должны быть преобразованы в 0 ли? – dan04

ответ

7

Это поможет вам ваш бит ..

CAST(CASE WHEN Direct = 'Y' THEN 1 ELSE 0 END AS BIT) AS DirectDebit 
4

Смотрите, если это работает:

SELECT CASE WHEN Direct = 'Y' THEN 1 ELSE 0 END FROM YOURTABLE 
+0

ничего себе! как я могу убедиться, что столбец имеет бит типа? – Riz

+0

бит (Transact-SQL): целочисленный тип данных, который может принимать значение 1, 0 или NULL. Таким образом, я думаю, что значения, которые вы получаете из вышеуказанного запроса, правильно вписываются в столбец типа бит. –

+1

без литья/преобразования ответа от CASE, вы не можете быть уверены в том, какой тип он вернет – CResults

1
SELECT CASE Direct 
WHEN 'Y' THEN '1' 
WHEN 'N' THEN '0' 
ELSE '0' 
END as DirectDebit 
FROM TableName 

... должно работать.

Смежные вопросы