2010-03-27 32 views
5

Tôi có một bảng có cột được gọi là Trực tiếp loại char (1). Giá trị của nó là 'Y' hoặc 'N' hoặc NULL. Tôi đang tạo một khung nhìn và tôi muốn giá trị được chuyển thành 0 hoặc 1 của bit kiểu. Ngay bây giờ nó thuộc loại INT. Làm thế nào để tôi làm việc này?chuyển từ 'Y' hoặc 'N' thành bit

Tiếp theo là các mã:

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

EDIT: Làm thế nào tôi có thể chắc chắn rằng các loại cột là loại BIT?

+0

Bạn có muốn NULL được chuyển đổi sang 0? – dan04

Trả lời

7

Điều này sẽ giúp bạn có được chút của bạn ..

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

Xem nếu công trình này:

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

wow bạn đang nhanh chóng! làm thế nào tôi có thể chắc chắn rằng cột là loại bit? – Riz

+0

bit (Transact-SQL): Kiểu dữ liệu số nguyên có thể có giá trị là 1, 0 hoặc NULL. Bằng cách này tôi nghĩ rằng các giá trị bạn nhận được từ truy vấn trên phù hợp chính xác trong một cột loại bit. –

+1

mà không cần truyền/chuyển đổi phản hồi từ CASE bạn không thể chắc chắn về kiểu trả về – CResults

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

... nên làm việc.

Các vấn đề liên quan