Trong bảng của tôi, tôi có một cột có giá trị là 0 hoặc 1. Nếu cột đó là 0 I, xuất ra giá trị là 'no'; nếu 1 tôi nên xuất là 'có' cho tất cả các hàng. Làm thế nào tôi có thể làm điều này chỉ bằng cách sử dụng câu lệnh SQL. Cảm ơnSQL Server INLINE NẾU ELSE
Trả lời
SQL Server không có một inline if
tuyên bố, nhưng nó có một inline case
có thể được sử dụng để thực hiện như nhau.
Trường hợp có hai hình thức, một là:
select
case MyFlag
when 1 then 'YES'
when 0 then 'NO'
else 'OOPS'
end
from MyTable
nơi nó được sử dụng giống như một công tắc bằng các ngôn ngữ C-like và thứ hai là:
select
case
when MyFlag = 1 then 'YES'
when MyFlag = 0 then 'NO'
-- when some unrelated condition...
else 'OOPS'
end
from MyTable
nơi nó senquentially đánh giá một danh sách các điều kiện và trả về điều kiện đầu tiên được hoàn thành.
P.S. Phần end
là bắt buộc và tôi thường quên điều đó. Nó cũng thường cho một case
stament đơn giản để được inlined hoàn toàn, giống như
select (case MyFlag when 1 then 'Yes' else 'No' end) as MyFlagDesc
Something như thế này:
SELECT
CASE YourColumn
WHEN 0 THEN 'no'
WHEN 1 THEN 'yes'
ELSE 'nothing'
END
FROM dbo.YourTable
Có hai khả năng:
(CASE WHEN condition1 THEN Value1 ELSE Value2 END)
hay, giải pháp hoàn thiện nhất:
(CASE value_to_check WHEN Value1 THEN Result1 [WHEN ... THEN ...] ELSE OtherResult END)
Tôi hiểu rằng đây câu hỏi (hiển thị ở đầu kết quả của google cho "máy chủ nội tuyến sql nếu") là 2 tuổi, nhưng với SQL Server 2012, câu trả lời có phần lỗi thời . Nó cũng có vẻ là một bản sao của SQL inline if statement type question, nhưng câu hỏi đó (thậm chí là một câu hỏi cũ hơn), cũng không có câu trả lời cập nhật.
Trong SQL Server 2012 bạn có thể sử dụng IIF
function:
IIF (boolean_expression, true_value, false_value)
Ví dụ:
SELECT IIF(someColumn = 1, 'yes', 'no')
Tôi trộn ba IIF trong một dòng, tôi có ba biến và tôi muốn biết cái nào là lớn hơn 0 nhưng tôi biết thứ tự ưu tiên PersonHomePhoneID, PersonWorkPhoneID và PersonCellPhoneID
IIF(@PersonHomePhoneID > 0 , @PersonHomePhoneID, IIF(@PersonWorkPhoneID > 0 , @PersonWorkPhoneID, IIF(@PersonCellPhoneID > 0 , @PersonCellPhoneID, 0)))
Câu trả lời của câu hỏi:
IIF(column = 1 , 'yes', IIF(column = 0, 'no', ''))
- 1. Máy chủ SQL: NẾU CÓ; ELSE
- 2. Biểu thức NẾU ELSE
- 3. SQL inline nếu loại tuyên bố câu hỏi
- 4. Ngắn nếu-else django mẫu
- 5. SQL Server 2008 - Vỏ/Nếu báo cáo trong CHỌN khoản
- 6. Inline Nếu trong Razor Xem
- 7. IF, ELIF, ELSE trong T-SQL
- 8. SQL Server CE: nếu có cập nhật khác, hãy chèn
- 9. Nếu else if hoặc Chuyển trường hợp
- 10. Simple Nếu/Else Razor Cú pháp
- 11. NẾU ... ELSE trong mệnh đề WHERE MySQL
- 12. XSLT nếu thuộc tính tồn tại/else
- 13. Django mẫu liên kết với nếu else
- 14. Có InstallDir trong NẾU ELSE khối
- 15. SQL Server NẾU KHÔNG SỬ DỤNG SỬ DỤNG?
- 16. INSERT INTO nếu không tồn tại SQL server
- 17. SQL trong SQL Server
- 18. Tài liệu Inline Gói Pl/SQL
- 19. Tại sao nếu/else so với hoặc/thoát trong PHP?
- 20. tăng tốc chạy nếu .. else lặp lại trong R
- 21. if-elseif-else 'điều kiện' trong oracle SQL
- 22. SQL: điều kiện (IF-ELSE) trong INSERT INTO
- 23. NẾU Điều kiện trong truy vấn SQL
- 24. SELECT COUNT (*) SQL SERVER
- 25. Khách hàng SQL Server đơn giản của SQL Server
- 26. SQL Server (SQLEXPRESS) và SQL Server Agent (SQLEXPRESS)
- 27. Thả bảng trong Sql Server bằng Sql Server Management Studio
- 28. SQL Server Đặt biến nếu tồn tại khác chèn vào bảng
- 29. SQL Server RowVersion
- 30. SQL Server VARCHAR (10)
upvoted, tôi thích IIF so CASE cho điều kiện boolean đơn giản vì nó là hợp lý hơn – Breakskater
đây là câu trả lời thoải mái, cảm ơn. –