- Posted on
- Học viện GNV
- Không có bình luận
Phân biệt giá trị Null trong SQL với giá trị 0 hoặc blank
Giá trị Null trong SQL Server thường là không có giá trị hoặc không biết. Nhiều bạn thường nhầm lẫn Null với Không có giá trị hoặc 0 nhưng thực ra hai cái các khác nhau nhé.
- Null không phải là trống ( blank)
- Null không phải là giá trị 0
Giá trị Null trong SQL và một số hàm xử lý
Mặc dù chúng ta thường không hay làm việc với Null nhưng trong vột vài trường hợp đặc biêt, nhất là trong quá trình làm sạch dữ liệu chúng ta vẫn thường hay gặp giá trị Null SQL. Chính vì vậy GNV sẽ giới thiệu đến bạn một số hàm để xử lý giá trị Null trong SQL.
1/ Hàm xử lý giá trị Null trong SQL số 1: ISNULL
Hàm có syntax như sau ISNULL(argument1, argument2), trong đó
– argument1 là expression ( cột,..) mà chúng ta muốn kiểm tra có null hay không.
– argument2 là giá trị sẽ thay thế nếu argument1 của chúng ta bỊ null
Ví dụ: Bảng HOA_DON của mình có giá trị Null và mình muốn thay giá trị Null đó bằng giá trị ‘None’. Cú pháp sẽ như sau:
SELECT ISNULL(Ten_Khach_Hang, ‘None’)
FROM HOA_DON
Bảng 1 là bảng ban đầu của mình và bảng thứ 2 sau khi mình dùng hàm ISNULL thì 2 giá trị cuối đã thay đổi.
Lưu ý: argument2 mà bạn muốn thay vào phải phù hợp với kiểu dữ liệu của cột đó nhé.
2/ Hàm xử lý giá trị Null trong SQL số 2: Hàm COALESCE
Hàm COALESCE có syntax như sau ISNULL(argument1, argument2, …, argumentn), trong đó
– argument1 là expression ( cột,..) mà chúng ta muốn kiểm tra có giá trị null hay không.
– argument2 là giá trị sẽ thay thế nếu argument1 của chúng ta bị null
Hàm COALESCE ưu điểm hơn làm ISNULL đó là chúng ta có nhiều lựa chọn giá trị để thể thay vào đó nhiều hơn so với hàm ISNULL
Cách hoạt động của hàm Null là nếu Arguement1 bị null thì giá trị của arguement2 sẽ thay vào đó. Nếu giá trị của arguement2 cũng bị Null thì sẽ thay vào giá trị của Argument3 và sẽ tiếp tục cho đến khi giá trị tiếp theo không phải là Null.
Khi chúng ta tính lương cho Sales, argument1 bị null nên giá trị được thay vào là Commission * Quantity và giá trị này bằng 50000 ( không Null)
Đối với Collab, vì argument1 bị null nên sẽ thay bằng arguemnt2 nhưng arguemnt2 của Collab vẫn là giá trị Null nên sẽ tiếp tục thực hiện argument3 và giá trị này bằng 75.000 ( không Null)
3/ Hàm xử lý giá trị Null trong SQL số 3: NULLIF
Khác với hai hàm xử lý giá trị Null trong SQL trên, Hàm NullIF sẽ trả lại trả giá trị Null nếu chúng thỏa mãn điều kiện. Cú pháp của hàm NULLIF(argument1, argument2)
– argument1 là giá trị bạn muốn check
– argument2 là giá trị sẽ dùng để check với argument1
– Nếu giá trị argment1 giống với giá trị argument2 thì arguement1 sẽ bị thay thế bới giá trị NULL.
– Nếu giá trị argment1 khác với giá trị argument2 thì arguement1 sẽ không bị thay thế
Khi chúng ta tính lương cho admin, argument1 ở bảng số 1 là 250000 khác với giá trị của argument2 là 0 nên giá trị của atgument1 không bị thay đổi.
Tuy nhiên, Argument của 2 nhân viên sales và collab là 0 trùng với giá trị của argument2 nên argument1 của chúng sẽ bị thay đổi bởi giá trị Null
Như vậy GNV đã giúp bạn hiểu rõ hơn về Giá trị Null trong SQL Server và một số hàm đề xử lý khi gặp giá trị Null. Bạn lưu ý sự khác nhau giữa giá giá trị Null – giá trị 0 và Giá trị Null – Ô trống (blank) nhé.