Coalesce là gì? Tìm hiểu về coalesce trong SQL Server

Coalesce trong SQL server là hàm được sử dụng rất nhiều, chuyên sử dụng cho những chương trình phức tạp. Nếu bạn muốn nâng cao kỹ năng của mình, nhất định phải hiểu sâu về cách dùng hàm này. Vậy hàm coalesce trong SQL server là gì? Cùng Comdy tìm hiểu chi tiết qua bài viết này nhé.

Hàm coalesce trong SQL Server – Coalesce trong SQL là gì?

Hàm coalesce trong SQL Server
Tìm hiểu chi tiết về hàm coalesce trong SQL Server

Coalesce SQL là gì?

Coalesce là gì? Trong SQL, hàm COALESCE được sử dụng để trả về giá trị đầu tiên không phải là NULL từ một danh sách các biểu thức. Nó hữu ích khi bạn muốn lấy giá trị không NULL đầu tiên từ một số cột hoặc biểu thức.

Hàm coalesce trong SQL Server  hay coalesce trong mySQL chấp nhận một tập các đối số, đánh giá chúng theo trình tự và trả về đối số không rỗng đầu tiên.

Sau đây minh họa cú pháp của biểu thức coalesce sql:

COALESCE(e1,[e2,...,en])

Trong cú pháp này, e1, e2,… en là các biểu thức vô hướng trả về các giá trị vô hướng (scalar value). Biểu thức COALESCE trả về biểu thức không NULL đầu tiên. Nếu tất cả các biểu thức đánh giá là NULL, thì biểu thức COALESCE trả về NULL;

Bởi vì sql coalesce là một biểu thức, bạn có thể sử dụng nó trong bất kỳ mệnh đề chấp nhận một biểu thức như SELECT, WHERE, GROUP BY và HAVING.

Ví dụ về biểu thức coalesce SQL server

Ví dụ về biểu thức coalesce SQL server
Lấy các ví dụ cụ thể về biểu thức coalesce SQL server

Biểu thức COALESCE trong SQL Server với dữ liệu chuỗi ký tự

Ví dụ sau sử dụng biểu thức coalesce in sql server để trả về chuỗi ‘Hi’ vì nó là đối số không rỗng đầu tiên:

SELECT 
    COALESCE(NULL, 'Hi', 'Hello', NULL) result;

Đây là đầu ra:

result
------
Hi

(1 row affected)

Biểu thức COALESCE trong SQL Server với dữ liệu số

Ví dụ này sử dụng biểu thức coalesce in sql để đánh giá danh sách các đối số và trả về số đầu tiên:

SELECT 
    COALESCE(NULL, NULL, 100, 200) result;

Kết quả như sau:

result
-----------
100

(1 row affected)

Biểu thức COALESCE trong SQL Server để sử dụng dữ liệu có sẵn

Đầu tiên, hãy tạo một bảng mới có tên salaries để lưu trữ thông tin lương của nhân viên:

CREATE TABLE salaries (
    staff_id INT PRIMARY KEY,
    hourly_rate decimal,
    weekly_rate decimal,
    monthly_rate decimal,
    CHECK(
        hourly_rate IS NOT NULL OR 
        weekly_rate IS NOT NULL OR 
        monthly_rate IS NOT NULL)
);

Mỗi nhân viên chỉ có thể có một suất theo giờ, hàng tuần hoặc hàng tháng.

Thứ hai, chèn một số hàng vào bảng salaries:

INSERT INTO 
    salaries(
        staff_id, 
        hourly_rate, 
        weekly_rate, 
        monthly_rate
    )
VALUES
    (1,20, NULL,NULL),
    (2,30, NULL,NULL),
    (3,NULL, 1000,NULL),
    (4,NULL, NULL,6000);
    (5,NULL, NULL,6500);

Thứ ba, truy vấn dữ liệu từ bảng salaries:

SELECT
    staff_id, 
    hourly_rate, 
    weekly_rate, 
    monthly_rate
FROM
    salaries
ORDER BY
    staff_id;

Thứ tư, tính toán hàng tháng cho mỗi nhân viên bằng cách sử dụng biểu thức sql server coalesce như được hiển thị trong truy vấn sau:

SELECT
    staff_id,
    COALESCE(
        hourly_rate*22*8, 
        weekly_rate*4, 
        monthly_rate
    ) monthly_salary
FROM
    salaries;

Trong ví dụ này, chúng tôi sử dụng biểu thức COALESCE để trả về tập kết quả chỉ có giá trị không NULL tìm thấy trong cột hourly_rate, weekly_rate và monthly_rate.

Biểu thức coalesce so với biểu thức CASE

Biểu thức coalesce so với biểu thức CASE
Biểu thức coalesce với biểu thức CASE đều trả về cùng 1 kết quả trong SQL server

Biểu thức COALESCE là một cú pháp thân thiện của biểu thức CASE.Các biểu thức sau trả về cùng một kết quả:

COALESCE(e1,e2,e3)

CASE
    WHEN e1 IS NOT NULL THEN e1
    WHEN e2 IS NOT NULL THEN e2
    ELSE e3
END

Lưu ý rằng trình tối ưu hóa truy vấn có thể sử dụng biểu thức CASE để viết lại biểu thức COALESCE.

Coalesce trong postgreSQL là gì?

Coalesce trong postgreSQL là gì
Coalesce trong postgreSQL được sử dụng để trả về giá trị đầu tiên không phải là NULL từ một danh sách các biểu thức
Trong PostgreSQL, hàm COALESCE hoạt động tương tự như trong SQL server. Nó được sử dụng để trả về giá trị đầu tiên không phải là NULL từ một danh sách các biểu thức. Cú pháp của COALESCE trong PostgreSQL cũng tương tự như sau:
COALESCE(expression1, expression2, …, expression_n)

Các biểu thức (expression1, expression2, …, expression_n) sẽ được kiểm tra theo thứ tự. Hàm sẽ trả về giá trị của biểu thức đầu tiên không phải là NULL. Nếu tất cả các biểu thức đều NULL, thì COALESCE sẽ trả về NULL.

Cách dùng hàm coalesce trong oracle có giống với SQL không?

Cách sử dụng hàm COALESCE trong Oracle tương tự như trong SQL server chuẩn. Do đó chỉ cần biết cách sử dụng hàm coalesce trong sql server là đã có thể áp dụng tương tự đối với oracle. Cả hai đều sử dụng cú pháp giống nhau để trả về giá trị đầu tiên không phải là NULL từ một danh sách các biểu thức.

Hàm coalesce có thay thế giá trị null trong SQL không?

Hàm COALESCE trong SQL được sử dụng để thay thế giá trị NULL bằng một giá trị khác. Khi bạn có một danh sách các biểu thức, hàm COALESCE sẽ trả về giá trị của biểu thức đầu tiên không phải là NULL. Nếu tất cả các biểu thức đều NULL, thì COALESCE sẽ trả về NULL hoặc giá trị mặc định bạn chỉ định.

Ví dụ, nếu bạn muốn thay thế giá trị NULL trong cột column1 bằng giá trị mặc định ‘DefaultValue’, bạn có thể sử dụng hàm COALESCE như sau:

SELECT COALESCE(column1, ‘DefaultValue’) AS Result
FROM your_table;

Trong trường hợp ở trên, nếu như column1 là NULL, kết quả sẽ là ‘DefaultValue’. Nhưng nếu column1 không phải là NULL, kết quả sẽ là giá trị của column1.

Case when trong SQL là gì?

Case when trong SQL là gì
Câu lệnh case when khá tương đồng với câu lệnh if trong sql về mặt chức năng

Case là câu lệnh có tác dụng thiết lập điều kiện rẽ nhánh. Câu lệnh case when khá tương đồng với câu lệnh if trong sql về mặt chức năng.

Có 2 định dạng hàm case như sau:

  • Simple case: Hàm case ở dạng đơn giản có chức năng đối chiếu 1 biểu thức cụ thể với 1 bộ biểu thức đơn giản để xác định kết quả.
  • Searched case: Hàm case ở dạng tìm kiếm được dùng với mục đích đánh giá 1 bộ biểu thức boolean để xác định kết quả.

Cú pháp của câu lệnh case when trong SQL server

Simple case

CASE bieuthuc_dauvao

WHEN bieuthuc_1 THEN ketqua_1

WHEN bieuthuc_2 THEN ketqua_2

WHEN bieuthuc_n THEN ketqua_n

ELSE ketqua_khac

END

Searches case

CASE

WHEN dieukien_1 THEN ketqua_1

WHEN dieukien_2 THEN ketqua_2

WHEN dieukien_n THEN ketqua_n

ELSE ketqua_khac

END

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy về hàm coalesce in SQL server. Hi vọng những thông tin, kiến thức hữu ích trong bài viết này sẽ giúp bạn xử lý các chương trình, bài toán một cách nhanh chóng, chính xác, hiệu quả. Xin cám ơn vì đã theo dõi, ủng hộ!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *