Tuyên bố CASE với IS NULL và KHÔNG NULL


12

Có cách nào tốt hơn để viết các dòng dưới đây trong SQL Server 2005 không?

CASE
WHEN (ID IS NULL)
   THEN 'YES'
WHEN (ID IS NOT NULL)
   THEN 'NO'
END AS ID_Value,

3
Xác định "tốt hơn".
Wesley

Tôi không quen thuộc với MSSQL nhưng nếu nó có chức năng như hàm IF trong MySQL, bạn có thể viết mã như vậy:IF(ID IS NULL, 'YES', 'NO') AS ID_Value
Kondybas

1
SQL Server 2012 có IIFnhưng câu hỏi được gắn thẻ năm 2005.
Martin Smith

Bạn sẽ có thể thực hiện điều này với tuyên bố dưới đây. isnull(nullif(isnull(ID,'Y'),ID),'N')
Jason Cumberland

1
@ Bappy1988 Tại sao nó tốt hơn câu trả lời của Jay?
dezso

Câu trả lời:


16

Bạn đã thử chưa:

CASE WHEN (ID IS NULL) THEN 'YES' ELSE 'NO' END AS ID_Value,

Tôi chỉ có quyền truy cập vào năm 2008 ngay bây giờ, nhưng tôi hy vọng rằng cú pháp này sẽ vẫn hoạt động vào năm 2005 ( có vẻ như là một phần của định nghĩa ban đầu CASE).


Có - Tôi đã thử CASE WHEN (ID IS NULL) THEN 'YES' ELSE 'NO' END AS ID_ValueNhưng tôi đang tìm kiếm một cách tiếp cận khác tốt hơn giống như IF(ID IS NULL, 'YES', 'NO') AS ID_Valuetrong Ms Sql, để mọi thứ có thể nằm trong một dòng duy nhất. Mọi góp ý xin vui lòng

7
Câu trả lời này là trong một dòng duy nhất. Nếu bạn muốn, bạn có thể đặt toàn bộ câu lệnh trong một dòng duy nhất.
ypercubeᵀᴹ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.