Giá trị Null trong SQL

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
Null thường được dùng để sử dụng để thay thế cho giá trị tạm thời chưa được cung cấp. Ví dụ khi bạn mở một tài khoản facebook bạn có thể bỏ qua mục số điện thoại để tiếp tục hoàn thành đăng ký, vậy bản ghi (record) về thông tin của chúng ta tạm thời chưa có trong CSDL và nó sẽ được tạm thời thay thế bằng giá trị Null.

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.

coalesce

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é. 

Nội dung