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.
COALESCE (expression [,…n])
Hay còn viết:
COALESCE( expression 1, expression 2, expression 3, …, expression n)
Trong đó:
Giá trị COALESCE trong sql 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:
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
Sử dụng hàm COALESCE trong SQL như sau:
SELECT COALESCE(phone_allowance, house_allowance, responsibility_allowance, overtime_allowance) * Scale As TotalAllwance
FROM Allowance
Kết quả:
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 |
Unpublished comment
Viết câu trả lời