Đề cập đến một trước question, tôi đã tự hỏi nếu nó luôn luôn có thể thay thế GIẢI MÃ bởi TRƯỜNG HỢP và cái nào là tốt hơn cho hiệu suất?TRƯỜNG HỢP vs GIẢI MÃ
Trả lời
Như thường lệ với Oracle ... AskTom ...
Từ post này ...
Giải mã có phần che khuất - CASE là rất rất rõ ràng. Những điều cần làm là dễ dàng để làm trong giải mã rất dễ làm trong TRƯỜNG HỢP, những thứ khó hoặc gần không thể làm với giải mã rất dễ dàng để làm trong CASE. CASE, logic khôn ngoan, thắng tay xuống.
Từ quan điểm về hiệu suất có vẻ như chúng giống nhau, một lần nữa ở trên đề cập đến một số khác biệt về tốc độ nhưng không cần đánh giá các câu nói cụ thể khó nói.
Một điểm khác từ cùng một bài viết: "Giải mã là hàm Oracle ban đầu được cung cấp với các bản phát hành của cơ sở dữ liệu trước 8.1.6. Bắt đầu với 816, CASE là cách tiêu chuẩn để đạt được cùng một kết quả " - Vì vậy, khi sử dụng các phiên bản cũ hơn của Oracle, CASE có thể không khả dụng. –
8.1.6 là rất cũ, tôi nghĩ rằng 8.1.6 ngày từ năm 1999. – TTT
Cảm ơn @TTT, đó là thú vị. Tôi vừa được thuê để chuyển đổi các báo cáo Cognos 7 thành Cognos 10 :). Bây giờ hãy xem xét chuyển đổi câu lệnh DECODE thành CASE. –
Có một sự khác biệt lớn giữa DECODE
và CASE
và nó phải làm với cách so sánh NULLs
. DECODE
sẽ trả về "true" nếu bạn so sánh NULL
đến NULL
. CASE
sẽ không. Ví dụ:
DECODE(NULL, NULL, 1, 0)
sẽ trả về '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
sẽ trả về '0'. Bạn sẽ phải viết nó như:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END
Tôi nghĩ đây là một sự khác biệt rất quan trọng. Tôi đã chỉ đọc về giải mã, cố gắng để thay thế nó bằng trường hợp và tự hỏi tại sao tôi không nhìn thấy kết quả tương tự khi một giá trị cột có null. Cảm ơn bạn đã làm rõ điều này! – prabhu
select (DECODE(NULL, NULL, 1, 0)) from dual;
select (CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END
)
from dual;
cả hai trở lại 1
không có gì ở đây mà chưa được trả lời bởi Cheran. – ceving
CASE là một tuyên bố và giải mã là một chức năng Chúng tôi có thể sử dụng CASE trong mệnh đề where và không thể sử dụng DECODE trong mệnh đề where. DECODE chỉ có thể kiểm tra các toán tử bình đẳng khi CASE có thể hỗ trợ tất cả các toán tử quan hệ DECODE chỉ có thể được sử dụng trong sql khi CASE có thể được sử dụng trong SQL và PL/SQL CASE tốt hơn DECODE.
Bạn có thể tìm thêm: http://www.oracleinformation.com/p/sql-tutorial.html
-1 cho "... và không thể sử dụng DECODE trong mệnh đề where."DECODE là một hàm và mọi hàm đều có giá trị trả về. Và bạn có thể sử dụng giá trị trả về đó để kiểm tra một số giá trị khác: DECODE (tbl.field, SearchList, SomeConstOrAField, theDefault) NOT IN (một số danh sách khác) hoặc DECODE (tbl.field, SearchList, SomeConstOrAField, theDefault) = một cái gì đó v.v. –
- 1. Báo cáo trường hợp/Chức năng giải mã trong Informatica
- 2. trường hợp chuyển đổi vs nếu khác
- 3. trăn eval vs ast.literal_eval vs JSON giải mã
- 4. Guards vs if-then-else vs trường hợp trong Haskell
- 5. URL: Chữ thường VS trường hợp Upper
- 6. json_encode/json_decode vs Zend_Json :: mã hóa/Zend_Json :: giải mã
- 7. Ai đó có thể giải thích trường hợp xảy ra trường hợp áp dụng trong mã này không?
- 8. Giải mã và công văn giải thích vs Giải thích luồng
- 9. Cách thêm biến môi trường vào giải pháp VS (.sln)
- 10. Làm mới biến môi trường cho giải pháp VS mở
- 11. Giải thích mẫu phù hợp vs chuyển đổi
- 12. chiều dài không hợp lệ cho một char mảng Base-64 trong giải mã/giải mã
- 13. Aptana 1.5 "svn: Lỗi giải quyết trường hợp của"
- 14. Mã lỗi trong trường hợp ngoại lệ so với trường hợp ngoại lệ hierarhy
- 15. Hợp đồng mã Vs. Đối tượng khởi tạo (.net 4.0)
- 16. Hợp nhất độ phân giải xung đột với mã mới
- 17. Mở rộng Visual Studio hoặc Resharper để giải mã mã
- 18. Trường hợp chuyển đổi mã mức lắp ráp
- 19. Trường hợp trong một virtualenv nào mã tùy chỉnh đi?
- 20. Mã hóa kiểu PHP trả về; trong chuyển/trường hợp
- 21. Trường hợp nào destructor ẩn trong mã này?
- 22. Biến môi trường Đường dẫn Giải pháp của Visual Studio
- 23. Giải mã base64 của Django urlsafe với giải mã
- 24. giải mã (* (void (*)()) 0)()
- 25. PGP Mã hóa và Giải mã
- 26. Trường hợp so với trường hợp khác: Cách nào hiệu quả hơn?
- 27. X509Xóa mã hóa/giải mã chứng nhận
- 28. Mã hóa/giải mã base64
- 29. Mã hóa/giải mã RSA
- 30. Cách giải mã mã QR
Tôi vừa googled "Oracle case vs decode" và tìm thấy nhiều liên kết. Về cơ bản Case dễ đọc hơn, linh hoạt hơn và tiêu chuẩn hơn – Rene