Mysql nếu so với hiệu suất trường hợp

SQL là một ngôn ngữ khai báo. nó không cung cấp khả năng kiểm soát luồng chương trình như

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
31 đối với các chương trình bắt buộc. Tuy nhiên, SQL có một cái gì đó tương tự. biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0. Là một biểu thức—chứ không phải là một cấu trúc điều khiển—có nghĩa là
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 thay đổi kết quả của các công thức [biểu thức] dựa trên các điều kiện. Cách sử dụng của nó tương tự như toán tử bậc ba
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
2 trong các ngôn ngữ lập trình khác

cú pháp

Cú pháp của biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 rất linh hoạt và cho phép một số từ viết tắt. Ví dụ sau đây cho thấy cú pháp ở dạng chung nhất—cái gọi là trường hợp tìm kiếm. Các biến thể khác là chữ viết tắt cũng có thể được viết là trường hợp tìm kiếm. Hơn nữa, trường hợp tìm kiếm hoạt động trong hầu hết các cơ sở dữ liệu SQL. Từ quan điểm đó, người ta có thể nói rằng trường hợp được tìm kiếm là cú pháp
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 duy nhất bạn thực sự cần nhớ

CASE WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END

Lưu ý rằng

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
5 là một điều kiện giống như điều kiện trong mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
6—ví dụ.
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
7. Do đó, trường hợp tìm kiếm tên.
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
8 là một biểu thức SQL tùy ý. nó có thể là một biểu thức đơn giản như một tên hằng hoặc tên cột, hoặc cũng có thể là một biểu thức SQL phức tạp chứa các truy vấn con và tất nhiên là các biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 lồng nhau

Một biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 có thể chứa một số cặp
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21-
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22. Điều này cho phép nhiều điều kiện ngay cả khi không lồng vào nhau—không giống như toán tử
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
2 trong các ngôn ngữ lập trình khác. Mặt khác, việc lồng cung cấp quyền ưu tiên vốn có giữa các điều kiện. Biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 phẳng không có quyền ưu tiên cố hữu như vậy. Để thu hẹp khoảng cách đó, SQL sử dụng thứ tự xuất hiện các điều kiện trong biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 để xác định mức độ ưu tiên của chúng. 0 Nói một cách đơn giản.
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 biểu thức ước lượng cho
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
8 của giá trị đúng đầu tiên của
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
5

Trước khi kết thúc biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 với
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
10, mệnh đề tùy chọn
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
11 có thể được sử dụng.
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
8 của
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
11 được sử dụng nếu không có
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
5 nào đúng. 1 Nếu
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
11 bị bỏ qua,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
16 là ẩn. 2

Tiêu chuẩn SQL không chỉ định cách xử lý biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0—nó chỉ xác định kết quả. 3 Trên thực tế, có những sản phẩm đôi khi xử lý mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22 ngay cả trước mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21 tương ứng [đọc lại.
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22 trước
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21]. Tất nhiên, những sản phẩm này cuối cùng cũng mang lại kết quả phù hợp—họ chỉ loại bỏ những sản phẩm được đánh giá không cần thiết. Cuối cùng, đây là kết quả của bản chất khai báo của SQL. cơ sở dữ liệu—chứ không phải lập trình viên—quyết định làm thế nào để có được kết quả chính xác. Bạn sẽ tìm hiểu thêm về điều này trong Tiện ích mở rộng độc quyền. Quy trình đánh giá tài liệu

Mẹo

Không sử dụng các hàm không xác định hoặc các hàm thay đổi dữ liệu trong biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0. Quá trình đánh giá không xác định có thể có tác dụng phụ không thể đoán trước

Mẫu đơn giản

Để tránh lặp đi lặp lại một toán hạng được sử dụng trong tất cả các mệnh đề

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21, tiêu chuẩn SQL đưa ra cái gọi là trường hợp đơn giản

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END

Trường hợp đơn giản chia

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
5 thành hai phần. toán hạng chung [e. g. , tên cột] được đặt ngay sau từ khóa
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0. Mặt khác của sự so sánh vẫn còn trong mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21. Toán tử so sánh bằng [______397] được ngụ ý. 4

Tiêu chuẩn xác định trường hợp đơn giản là sự chuyển đổi sang trường hợp được tìm kiếm—các quy tắc được mô tả ở trên vẫn hợp lệ

thận trọng

Bạn không thể sử dụng trường hợp đơn giản để kiểm tra

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98 vì nó luôn sử dụng toán tử bằng [
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
97]. Đó là vì điều kiện
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
20 không đúng5—do đó, mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21 không bao giờ được áp dụng. Nếu
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22 là
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98 thì áp dụng mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
11

Từ viết tắt để đối phó với
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98

SQL cung cấp hai chữ viết tắt

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 để đối phó với
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98.
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
28 và
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
29. Cả hai đều được sử dụng giống như các hàm và không sử dụng các từ khóa
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
11 và
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
10

CASE WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
75 trả về tham số not-
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98 đầu tiên [hoặc
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98, nếu tất cả các tham số là
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98]. Số lượng tham số không giới hạn. Tiêu chuẩn định nghĩa
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
28 là phép biến đổi thành biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0. Do đó các biểu thức sau là tương đương

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
2____21

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
51 yêu cầu hai tham số và thường trả về giá trị của tham số đầu tiên. Chỉ khi cả hai giá trị đều bằng nhau [
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
97], thì
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98 mới được trả về.
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
51 cũng được định nghĩa là phép biến đổi thành
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 và thường được sử dụng để ngăn lỗi chia cho số 0

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
9
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
2

Thay mặt tôi

Tôi kiếm sống từ việc đào tạo SQL, điều chỉnh và tư vấn SQL và cuốn sách của tôi “Giải thích về hiệu suất SQL”. Tìm hiểu thêm tại https. // winand. tại/

Hình thức hầu như không được hỗ trợ

Tất cả các dạng

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 được hiển thị ở trên đều được giới thiệu với SQL-92 trung gian và thực tế hoạt động trong tất cả các cơ sở dữ liệu SQL. SQL. 2003 đã giới thiệu thêm hai chữ viết tắt mở rộng trường hợp đơn giản. Cả hai đều là tính năng tùy chọn và chưa được hỗ trợ rộng rãi

Cái gọi là trường hợp mở rộng chấp nhận một toán tử so sánh ngay sau

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21 và do đó loại bỏ giới hạn rằng trường hợp đơn giản luôn sử dụng phép so sánh bằng [_______397]. Ví dụ sau sử dụng toán tử nhỏ hơn [
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
59] để ánh xạ các giá trị thành các khoảng. Nó cũng dựa trên mức độ ưu tiên của mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21. điều kiện đúng đầu tiên thắng

CASE WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
7

Phần bổ sung thứ hai được giới thiệu bởi SQL. 2003 cho phép các danh sách được phân tách bằng dấu phẩy trong mệnh đề

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
5

Xác định loại kết quả

Loại kết quả của một biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 được xác định bởi tất cả các biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
8 chung. 6 Tiêu chuẩn SQL xác định các quy tắc nghiêm ngặt về cách tìm loại kết quả khi trộn các loại dữ liệu có liên quan7—ví dụ: nếu một mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22 có loại
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
35 trong khi một mệnh đề khác có loại
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
36. Các quy tắc tiêu chuẩn xác định cho các loại liên quan về cơ bản là lẽ thường, tôi. e. , loại kết quả của biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 là loại ngắn nhất có thể chứa tất cả các giá trị kết quả có thể. 8 Trong ví dụ, loại kết quả là
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
36

Như thường lệ,

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98 là đặc biệt. chữ
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98—như trong
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
16—không có loại đã biết. Do đó, nó bị bỏ qua khi xác định loại kết quả của biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0. 9 Thực tế,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
98 điều chỉnh thành loại kết quả của biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 tổng thể

Các loại số gần đúng [

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
315,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
316 hoặc
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
317] cần được chăm sóc đặc biệt. nếu một
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
8 có một kiểu số gần đúng, thì tiêu chuẩn SQL yêu cầu kiểu kết quả của biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 cũng phải là một kiểu số gần đúng—cái nào được xác định triển khai. 10 Tương tự như vậy, việc triển khai được xác định chuyển đổi kiểu ngầm định nào được thực hiện. 11 Do đó, một số sản phẩm cho phép trộn các loại dữ liệu không liên quan trong
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 biểu thức mà không cần chuyển đổi rõ ràng

Mẹo

Tránh trộn lẫn các loại trong mệnh đề

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22. Nếu cần, hãy sử dụng
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
02 để chuyển đổi chúng thành loại được yêu cầu một cách rõ ràng

Trường hợp sử dụng

Các bài viết sau đây mô tả các trường hợp sử dụng phổ biến của

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0

  • Pivot – Hàng tới Cột –

    CASE 
         WHEN  THEN 
        [WHEN  THEN 
         ...]
        [ELSE ]
    END
    0 trong các hàm tổng hợp

  • Ngăn phép chia cho 0 –

    CASE 
         WHEN  THEN 
        [WHEN  THEN 
         ...]
        [ELSE ]
    END
    05

  • Hơn để làm theo. Đăng ký nhận bản tin

khả năng tương thích

Biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 được giới thiệu với SQL-92 trung cấp. SQL. 1999 kết hợp
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 làm tính năng F261 vào Core SQL để nó trở thành bắt buộc. Ngày nay hầu như tất cả các cơ sở dữ liệu SQL đều hỗ trợ tính năng này

SQL. 2003 đã thêm hai tính năng tùy chọn hầu như không được hỗ trợ “Biểu thức CASE mở rộng” [F262] và “Các vị từ được phân tách bằng dấu phẩy trong biểu thức CASE đơn giản” [F263]

BigQueryDb2 [LUW]MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLitecase when thencase when thencase when thencase when , … thennullifcoalesce

Tiện ích mở rộng độc quyền

Quy trình đánh giá tài liệu

Tiêu chuẩn SQL không xác định quy trình cách giải quyết biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0. Đặc biệt, tiêu chuẩn không bắt buộc phải kiểm tra các điều kiện theo thứ tự xuất hiện của chúng trong biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0. Miễn là việc triển khai cuối cùng mang lại kết quả phù hợp, mọi thứ đều được cho phép

Mặc dù các quy trình đánh giá khác nhau phải tạo ra cùng một kết quả, nhưng các quy trình khác nhau có thể gây ra các tác dụng phụ khác nhau. Ví dụ: khi sử dụng các hàm thay đổi dữ liệu, chúng có thể được gọi ngay cả khi không thực sự cần thiết—tuy nhiên, bạn có thể thấy tác dụng phụ của chúng. dữ liệu đã thay đổi. Tương tự như vậy, việc có xảy ra lỗi thời gian chạy hay không có thể phụ thuộc vào quy trình đánh giá. nếu lỗi nằm trong một phần của biểu thức

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 thì không nhất thiết phải được đánh giá, nó có thể được kích hoạt hoặc không trong quá trình đánh giá. Cuối cùng, thời gian đánh giá cũng là một tác dụng phụ phụ thuộc vào quá trình đánh giá

Xem xét tác dụng phụ cuối cùng—hiệu suất—quy trình đánh giá rõ ràng là kiểm tra các mệnh đề

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21 theo thứ tự cho đến khi tìm thấy điều kiện đúng đầu tiên. Tất nhiên, cũng hợp lý khi chỉ đánh giá một kết quả—mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
22 tương ứng hoặc mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
11. Một số sản phẩm thậm chí còn ghi lại quy trình đánh giá này. Tuy nhiên, có những trường hợp có thể dẫn đến tác dụng phụ đáng ngạc nhiên

Một ví dụ phổ biến có thể gây ra tác dụng phụ đáng ngạc nhiên là điều này. một số sản phẩm đánh giá các biểu thức không đổi sớm—i. e. , trong giai đoạn chuẩn bị trước khi thực hiện. Điều này rất giống với trình biên dịch giải quyết các biểu thức hằng số [e. g. ,

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
14] trong quá trình biên dịch—thay vì sau đó tạo mã tính toán kết quả trong thời gian chạy. Nếu tối ưu hóa này ảnh hưởng đến một phần của biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0, thứ tự đánh giá sẽ bị xáo trộn

Do đó, ví dụ sau có thể dẫn đến lỗi chia cho 0 ngay cả khi điều kiện

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
16 không bao giờ đúng. Ngay cả khi bảng
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
17 trống, lỗi vẫn có thể xảy ra, nếu biểu thức hằng số
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
18 được đánh giá trong giai đoạn chuẩn bị

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
3

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
19,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
20,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21, không có giá trị, …

Các hàm

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
19 [Oracle, Db2],
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21 [Google BigQuery, MySQL],
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
24 [SQL Server] gần tương ứng với
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
28 ngoại trừ việc chúng bị giới hạn ở hai đối số

Máy chủ SQL
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
24 có thể mất dữ liệu

Trong SQL Server, kiểu trả về của hàm

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
24 luôn là kiểu của đối số đầu tiên. Ví dụ: nếu đối số thứ hai có độ chính xác cao hơn, dữ liệu quan trọng có thể bị mất. Xem “Coalesce and isnull in Microsoft SQL Server – the gotchas. ”

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
28 [Oracle, MySQL]

Hàm

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
28 chứng minh rằng các hàm độc quyền có thể thực hiện những việc hoàn toàn khác trong các sản phẩm khác nhau. Trong MySQL,
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
28 là một hàm mã hóa [không dùng nữa]. Trong Cơ sở dữ liệu Oracle, nó là một dạng ngắn độc quyền của
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
31 [Google BigQuery, MySQL]

Hàm

CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
31 là dạng rút gọn độc quyền của biểu thức
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
0 được tìm kiếm với một mệnh đề
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
21—rất giống với toán tử bậc ba  
CASE 
     WHEN  THEN 
    [WHEN  THEN 
     ...]
    [ELSE ]
END
2

Khi nào nên sử dụng case thay vì if SQL?

IF thường được sử dụng cho luồng logic, trong đó CASE được sử dụng để trả về giá trị dữ liệu ; .

Khi nào sử dụng câu lệnh case trong MySQL?

MySQL CASE thường được sử dụng khi muốn đánh giá các giá trị cột đã cho theo các điều kiện đã cho hoặc trả về giá trị tùy chỉnh tùy thuộc vào cột hiện tại có giá trị được đánh giá theo một điều kiện nhất định . .

Bạn có thể sử dụng câu lệnh if trong MySQL không?

Hàm IF[] của MySQL được sử dụng để xác thực một điều kiện . Hàm IF[] trả về một giá trị nếu điều kiện là TRUE và một giá trị khác nếu điều kiện là FALSE. Hàm MySQL IF[] có thể trả về các giá trị có thể là số hoặc chuỗi tùy thuộc vào ngữ cảnh mà hàm được sử dụng.

MySQL có hỗ trợ báo cáo trường hợp không?

Câu lệnh CASE của MySQL . Vì vậy, khi một điều kiện là đúng, nó sẽ ngừng đọc và trả về kết quả. Nếu không có điều kiện nào đúng, nó sẽ trả về giá trị trong mệnh đề ELSE. The CASE statement goes through conditions and returns a value when the first condition is met [like an if-then-else statement]. So, once a condition is true, it will stop reading and return the result. If no conditions are true, it returns the value in the ELSE clause.

Chủ Đề