2010-07-27 37 views
6

Tôi cần chọn cột bit có thể vô hiệu trong chế độ xem, nhưng sử dụng giá trị mặc định là FALSE bất cứ khi nào giá trị là NULL. (Vì các lý do khác, tôi không thể thêm giá trị mặc định trên bảng nguồn.) Đây là những gì tôi đang làm.Chọn bit rỗng có giá trị mặc định

CAST 
(
    CASE 
    WHEN bit_column IS NULL THEN 0 
    ELSE bit_column 
END 
    AS BIT 
) AS bit_column, 
... 

Tôi phải làm điều này trên bốn cột, vì vậy tôi tự hỏi liệu có cách nào tốt hơn/hiệu quả hơn để thực hiện việc này hay không.

Trả lời

9

sử dụng chức năng isnull.

isnull(bit_column, 0) 
5
SELECT coalesce(bit_column,0) bit_column 
+0

datatype gì sẽ được gửi cho khách hàng? int hoặc bit? – gbn

+0

Một chút sẽ được gửi cho khách hàng. – xcer

+0

Câu hỏi hay, tôi đã nghiên cứu và tìm thấy liên kết này: http://databases.aspfaq.com/database/coalesce-vs-isnull-sql.html Từ đó, "COALESCE hoạt động giống như biểu thức CASE, trả về một kiểu dữ liệu đơn tùy thuộc vào sự ưu tiên và có sức chứa tất cả các kết quả có thể có ". Vì vậy, tôi không chắc chắn. Nhưng về phía khách hàng, 0 hoặc 1 sẽ phù hợp với một chút hoặc một int, vì vậy tôi không chắc chắn nó quan trọng. – dcp

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