SQL WHEN CASE: Hướng dẫn đầy đủ

Cập nhật lần cuối: 20 Tháng Mười 2025
SQL KHI TRƯỜNG HỢP

SQL, hay Ngôn ngữ truy vấn có cấu trúc, là một công cụ mạnh mẽ để quản lý và thao tác với các cơ sở dữ liệu quan hệ. Một trong những tính năng giá trị nhất của SQL là khả năng xử lý các câu lệnh điều kiện. Các câu lệnh điều kiện cho phép bạn chỉ định các hành động khác nhau dựa trên các điều kiện cụ thể, mang lại sự linh hoạt và kiểm soát trong các truy vấn của bạn. Trong số các câu lệnh điều kiện khác nhau trong SQL, câu lệnh WHEN CASE nổi bật như một công cụ linh hoạt và hiệu quả . Nó cho phép bạn thực hiện logic điều kiện trong một truy vấn, làm cho nó trở thành một nguồn tài nguyên vô giá trong bộ công cụ SQL của bạn.

SQL WHEN CASE: Khám phá những điều cơ bản

Để hiểu hết tiềm năng của câu lệnh SQL WHEN CASE, điều quan trọng là phải hiểu cú pháp và chức năng cơ bản của nó. Câu lệnh WHEN CASE của SQL chủ yếu được sử dụng để thực hiện đánh giá có điều kiện và trả về kết quả cụ thể dựa trên các điều kiện được đáp ứng. Chúng ta hãy xem xét cấu trúc cơ bản của câu lệnh WHEN CASE của SQL:

SELECT columna1,
       columna2,
       (CASE
           WHEN condicion1 THEN resultado1
           WHEN condicion2 THEN resultado2
           ELSE resultado
        END) AS alias
FROM nombre_tabla;

Trong cú pháp trên, columna1 y columna2 biểu thị các cột bạn muốn lấy từ bảng đã chỉ định. Từ khóa CASE bắt đầu đánh giá có điều kiện, tiếp theo là một loạt các điều kiện WHEN và kết quả tương ứng của chúng. Điều khoản ELSE cung cấp kết quả mặc định nếu không có điều kiện nào được đáp ứng. Cuối cùng, từ khóa END kết thúc câu điều kiện. Kết quả đánh giá được gán cho một bí danh để dễ tham khảo.

Đi sâu hơn vào SQL WHEN CASE

Bây giờ chúng ta đã tìm hiểu cấu trúc cơ bản của câu lệnh SQL WHEN CASE, hãy cùng khám phá các khía cạnh khác nhau của nó một cách chi tiết hơn. Bằng cách đi sâu vào các ứng dụng, biến thể và phương pháp hay nhất, chúng ta có thể khai thác toàn bộ tiềm năng của câu lệnh điều kiện mạnh mẽ này.

1. SQL WHEN CASE cho các đánh giá có điều kiện đơn giản

Trường hợp sử dụng đơn giản nhất cho câu lệnh WHEN CASE của SQL là thực hiện đánh giá có điều kiện trực tiếp. Bằng cách chỉ định các điều kiện và kết quả tương ứng, bạn có thể kiểm soát hiệu quả kết quả truy vấn của mình. Hãy xem xét ví dụ sau:

SELECT id_pedido,
       fecha_pedido,
       (CASE
           WHEN monto_total > 1000 THEN 'Pedido de alto valor'
           ELSE 'Pedido estándar'
        END) AS categoria_pedido
FROM pedidos;

Trong ví dụ này, chúng tôi lấy các cột id_pedido y fecha_pedido từ bảng pedidos. Câu CASE đánh giá cột monto_total, gán giá trị 'Đơn hàng giá trị cao' nếu tổng số tiền vượt quá 1000 và 'Đơn hàng tiêu chuẩn' nếu không. Kết quả được hiển thị với bí danh categoria_pedido.

2. Sử dụng SQL WHEN CASE với các hàm tổng hợp

Câu lệnh WHEN CASE của SQL cũng có thể được sử dụng kết hợp với các hàm tổng hợp để thực hiện các phép tính có điều kiện. Điều này cho phép bạn tính toán giá trị một cách linh hoạt dựa trên các điều kiện cụ thể. Hãy xem xét tình huống sau:

  Cơ sở dữ liệu phân tán: Chúng là gì, các loại và ưu điểm

Bạn có một bảng được gọi là empleados với các cột id_empleado, nombre, apellido y salario. Bạn muốn tính mức lương trung bình của nhân viên, nhưng loại trừ những mức lương dưới ngưỡng cụ thể. Sau đây là cách bạn có thể thực hiện điều này bằng cách sử dụng câu lệnh SQL WHEN CASE:

SELECT (CASE
           WHEN salario > 50000 THEN salario
           ELSE NULL
        END) AS salario_filtrado,
       AVG(salario) AS salario_promedio
FROM empleados;

Trong ví dụ này, câu lệnh CASE đánh giá cột salario, chỉ định giá trị của mức lương nếu nó vượt quá 50000 và NULL nếu không thì. Chức năng AVG được sử dụng để tính mức lương trung bình, không bao gồm mức lương đã lọc. Điều này giúp bạn kiểm soát tốt hơn các phép tính tổng hợp, cho phép bạn lọc bỏ dữ liệu không mong muốn.

3. Xử lý nhiều điều kiện với SQL WHEN CASE

Trong một số trường hợp, bạn có thể cần phải đánh giá nhiều điều kiện trong một câu lệnh SQL WHEN CASE. May mắn thay, SQL cung cấp một cách đơn giản để xử lý những tình huống như vậy. Bằng cách kết hợp nhiều điều kiện WHEN và kết quả tương ứng của chúng, bạn có thể tạo ra các đánh giá có điều kiện phức tạp. Hãy xem xét ví dụ sau:

SELECT nombre_producto,
       precio_unitario,
       (CASE
           WHEN precio_unitario > 50 THEN 'Costoso'
           WHEN precio_unitario > 20 THEN 'Moderado'
           ELSE 'Accesible'
        END) AS categoria_precio
FROM productos;

Trong ví dụ này, câu lệnh CASE đánh giá cột precio_unitario và chỉ định loại giá tương ứng trong tùy thuộc vào các điều kiện đã hoàn thành. Bằng cách cấu trúc các điều kiện một cách hiệu quả, bạn có thể xử lý nhiều tình huống khác nhau và phân loại dữ liệu của mình cho phù hợp.

4. SQL WHEN CASE trong các hoạt động JOIN

Câu lệnh SQL WHEN CASE cũng có thể được sử dụng trong các thao tác JOIN, cho phép bạn kết nối các bảng một cách có điều kiện dựa trên các tiêu chí cụ thể. Điều này cho phép truy xuất dữ liệu linh hoạt và năng động hơn . Hãy xem xét kịch bản sau:

  Lịch sử của Cơ sở dữ liệu: Hướng dẫn đầy đủ

Bạn có hai bảng, clientes y pedidos, với một cột chung id_cliente. Bạn muốn lấy thông tin khách hàng cùng với trạng thái của các đơn hàng tương ứng. Sau đây là cách bạn có thể thực hiện điều này bằng cách sử dụng câu lệnh SQL WHEN CASE:

SELECT c.id_cliente,
       c.nombre_cliente,
       p.estado_pedido
FROM clientes c
JOIN pedidos p ON c.id_cliente = p.id_cliente
WHERE (CASE
           WHEN p.estado_pedido = 'Enviado' THEN 1
           ELSE 0
        END) = 1;

Trong ví dụ này, câu lệnh CASE Nó được sử dụng trong mệnh đề WHERE để lọc có điều kiện các bàn được ghép lại với nhau. Chỉ những hàng có trạng thái đơn hàng là 'Đã giao hàng' mới được trả về, giúp bạn có được tập hợp kết quả cụ thể và phù hợp hơn.

Câu hỏi thường gặp về SQL WHEN CASE

  1. Mục đích của câu lệnh SQL WHEN CASE là gì? Nó được sử dụng để thực hiện đánh giá có điều kiện và trả về kết quả cụ thể dựa trên các điều kiện được đáp ứng. Cung cấp tính linh hoạt và kiểm soát trong các truy vấn SQL của bạn, cho phép bạn xử lý hiệu quả nhiều tình huống khác nhau.
  2. Tôi có thể sử dụng nhiều điều kiện WHEN trong một câu lệnh SQL WHEN CASE không? Có, bạn có thể sử dụng nhiều điều kiện WHEN trong một câu lệnh SQL WHEN CASE. Bằng cách kết hợp nhiều điều kiện và kết quả tương ứng của chúng, bạn có thể tạo ra các đánh giá có điều kiện phức tạp.
  3. Mệnh đề ELSE có bắt buộc trong câu lệnh WHEN CASE của SQL không? Không, mệnh đề ELSE không bắt buộc trong câu lệnh WHEN CASE của SQL. Tuy nhiên, bạn nên thêm mệnh đề ELSE để cung cấp kết quả mặc định nếu không có điều kiện nào được đáp ứng.
  4. Tôi có thể sử dụng câu lệnh SQL WHEN CASE với các hàm tổng hợp không? Có, bạn có thể sử dụng câu lệnh SQL WHEN CASE với các hàm tổng hợp để thực hiện các phép tính có điều kiện. Điều này cho phép bạn tính toán giá trị một cách linh hoạt dựa trên các điều kiện cụ thể.
  5. Câu lệnh WHEN CASE của SQL chỉ áp dụng trong câu lệnh SELECT phải không? Không, câu lệnh SQL WHEN CASE có thể được sử dụng ở nhiều phần khác nhau của truy vấn SQL, bao gồm các câu lệnh SELECT, WHERE và hoạt động JOIN. Nó cung cấp cho bạn sự linh hoạt để kiểm soát có điều kiện các khía cạnh khác nhau của truy vấn của bạn.
  6. Có bất kỳ cân nhắc nào về hiệu suất khi sử dụng câu lệnh SQL WHEN CASE không? Mặc dù tuyên bố này là một công cụ mạnh mẽ, nhưng điều quan trọng là phải xem xét tác động của nó đến hiệu suất truy vấn. Như với bất kỳ câu lệnh có điều kiện nào, việc đánh giá quá mức hoặc phức tạp có thể ảnh hưởng đến thời gian thực hiện truy vấn. Nên thử và tối ưu hóa các truy vấn của bạn cho hiệu suất tối ưu.
  Kiến trúc cơ sở dữ liệu máy khách máy chủ: Hướng dẫn đầy đủ

Kết luận

Câu lệnh SQL WHEN CASE là một công cụ thiết yếu trong kho vũ khí của nhà phát triển SQL. Với khả năng thực hiện các đánh giá có điều kiện và trả về các kết quả cụ thể, nó cho phép bạn xử lý các tình huống khác nhau một cách dễ dàng và chính xác. Bằng cách nắm vững nghệ thuật của các câu lệnh điều kiện trong SQL, bạn có thể nâng cao kỹ năng quản lý cơ sở dữ liệu và mở khóa những khả năng mới trong thao tác dữ liệu.