COALESCE trả về biểu thức khác NULL đầu tiên trong SQL
SQL hỗ trợ chức năng COALESCE để trả về biểu thức có giá trị khác NULL đầu tiên trong số những biểu thức được truyền vào COALESCE. Cú pháp: COALESCE (expression [,…n]) Hay còn viết: COALESCE( expression 1, expression 2, expression 3, …, expression n) Trong đó: ...
SQL hỗ trợ chức năng COALESCE để trả về biểu thức có giá trị khác NULL đầu tiên trong số những biểu thức được truyền vào COALESCE.
Cú pháp:
COALESCE (expression [,…n])
Hay còn viết:
COALESCE( expression 1, expression 2, expression 3, …, expression n)
Trong đó:
- expression: là một biểu thức có kiểu bất kỳ
- n: ý là có thể có nhiều expression, mỗi expression cách nhau bởi dấu phẩy (,) như cú pháp thứ 2 ở trên. Tất cả các biểu thức này bắt buộc phải cùng một dạng hoặc có thể qui đổi về cùng một dạng. Ví dụ, expression 1 là kiểu chuỗi thì, expression 2 đến expression n cũng phải là kiểu chuỗi, tương tự expression 1 là kiểu số thì expression 2 đến expression n cũng phải là kểu số, …
Giá trị COALESCE trả về chính là giá trị của biểu thức (expression) mà nó thỏa.
Ghi chú: nếu tất cả các expression là NULL thì COALESCE trả về NULL
Chức năng COALESCE (expression [,…n]) tương đương với chức năng CASE:
CASE WHEN (expression 1 IS NOT NULL) THEN expression 1 … WHEN (expression n IS NOT NULL) THEN expression n ELSE NULL
Ví dụ minh họa:
Góc Kinh Nghiệm sẽ đưa ra một ví dụ minh họa cụ thể để làm sáng tỏ hơn chức năng COALESCE.
Góc Kinh Nghiệm có bảng dữ liệu Allowance chứa thông tin trợ cấp của nhân viên, bao gồm 4 loại trợ cấp sau: phone_allowance (trợ cấp điện thoại), house_allowance (trợ cấp nhà ở), responsibility_allowance (trợ cấp trách nhiệm), overtime_allowance (trợ cấp làm thêm hay còn gọi là trợ cấp tăng ca). Nhân viên chỉ được nhận 1 trong 4 loại trợ cấp nói trên.
Giả sử bảng dữ liệu Allowance có dữ liệu như sau:
Employee | Scale | phone_allowance | house_allowance | responsibility_allowance | overtime_allowance |
Đoàn Văn Đang | 1.5 | null | 500,000 | null | null |
Trần Xuân Vũ | 2.6 | 368,000 | null | null | null |
Nguyễn Khánh Hưng | 3.4 | null | null | 679,000 | null |
Đoàn Thanh Thúy | 2.9 | null | null | null | 464,000 |
Tiền trợ cấp nhân viên hưởng = hệ số công việc (Scale) * tiền trợ cấp
Góc Kinh Nghiệm sử dụng hàm COALESCE như sau:
SELECT COALESCE(phone_allowance, house_allowance, responsibility_allowance, overtime_allowance) * Scale As TotalAllwance FROM Allowance
Kết quả Góc Kinh Nghiệm thu được sau khi chạy câu query:
Employee | TotalAllwance |
Đoàn Văn Đang | 750.000 |
Trần Xuân Vũ | 956.800 |
Nguyễn Khánh Hưng | 2.308.600 |
Đoàn Thanh Thúy | 1.345.600.0 |
Tương tự COALESCE bạn có thể sự dụng CASE
Góc Kinh Nghiệm chúc các bạn thành công!