fbpx
  • Hoang’s Blog
  • Career Stories
No Result
View All Result
  • Hoang’s Blog
  • Career Stories
No Result
View All Result
No Result
View All Result

LÀM VIỆC VỚI GIÁ TRỊ NULL TRONG SQL

May 11, 2023
in Skills & Knowledge, SQL, Technique, Tutorials
Share on FacebookShare on LinkedinShare on Email

Giá trị NULL có nghĩa là không có giá trị hoặc không xác định. Giá trị NULL có thể được sử dụng cho các giá trị chưa được cung cấp, chẳng hạn như khi khách hàng chưa cung cấp địa chỉ email. Như bạn đã thấy trước đây, một giá trị NULL cũng có thể được trả về bởi một số hàm chuyển đổi nếu một giá trị không tương thích với kiểu dữ liệu đích. 

NULL thực sự là một non-value, không ai biết nó là gì, bằng gì, nó không lớn hơn hay nhỏ hơn bất kỳ giá trị nào khác, nhưng đôi khi chúng ta lại cần làm việc với chúng, Rất may, T-SQL cung cấp các hàm để chuyển đổi hoặc thay thế các giá trị NULL. 

Các nội dung chính

  • 1 ISNULL 
  • 2 COALESCE 
  • 3 NULLIF 

ISNULL 

Hàm ISNULL nhận hai đối số. Đầu tiên là một biểu thức mà chúng ta đang test. Nếu giá trị của đối số đầu tiên đó là NULL, thì hàm trả về đối số thứ hai. Nếu biểu thức đầu tiên không rỗng, nó được trả về không thay đổi. 

Ví dụ: giả sử bảng Sales.Customer trong cơ sở dữ liệu bao gồm cột MiddleName cho phép giá trị NULL. Khi truy vấn bảng này, thay vì trả về NULL trong kết quả, bạn có thể chọn trả về một giá trị cụ thể, chẳng hạn như “Không có” (None). 

SELECT FirstName,  

                ISNULL(MiddleName, 'None') AS MiddleIfAny,  

                LastName  

FROM Sales.Customer; 

Kết quả từ truy vấn này có thể trông giống như sau: 

FirstName MiddleIfAny LastName 
Orlando N. Gee 
Keith None Howard 
Donna F. Gonzales 
… … … 

Lưu ý: Giá trị được thay thế cho NULL phải cùng kiểu dữ liệu với biểu thức đang được đánh giá. Trong ví dụ trên, MiddleName là một varchar, vì vậy giá trị thay thế không thể là số. Ngoài ra, bạn sẽ cần chọn một giá trị sẽ không xuất hiện trong dữ liệu dưới dạng giá trị thông thường. Đôi khi sẽ khó khăn để tìm một giá trị sẽ không bao giờ xuất hiện trong dữ liệu của bạn. 

Ví dụ trước đã xử lý giá trị NULL trong bảng nguồn, nhưng bạn có thể sử dụng ISNULL với bất kỳ biểu thức nào có thể trả về NULL, bao gồm lồng một hàm TRY_CONVERT trong một hàm ISNULL. 

COALESCE 

Hàm ISNULL không phải là tiêu chuẩn ANSI, vì vậy bạn có thể muốn sử dụng hàm COALESCE để thay thế. COALESCE linh hoạt hơn một chút là nó có thể nhận một số lượng biến đối số, mỗi đối số là một biểu thức. Nó sẽ trả về biểu thức đầu tiên trong danh sách không phải là NULL. 

Nếu chỉ có hai đối số, COALESCE hoạt động giống như ISNULL. Tuy nhiên, với nhiều hơn hai đối số, COALESCE có thể được sử dụng thay thế cho biểu thức CASE nhiều phần bằng cách sử dụng ISNULL. 

Nếu tất cả các đối số là NULL, hàm COALESCE trả về giá trị NULL. Tất cả các biểu thức phải trả về kiểu dữ liệu giống nhau hoặc tương thích. 

Cú pháp như sau: 

SELECT COALESCE(<expression_1>[, ...<expression_n>]; 

Ví dụ sau sử dụng một bảng hư cấu có tên HR.Wages, bao gồm ba cột chứa thông tin về thu nhập hàng tuần của nhân viên: mức lương theo giờ, mức lương hàng tuần và hoa hồng trên mỗi đơn vị bán được. Tuy nhiên, một nhân viên chỉ nhận được một loại lương. Đối với mỗi nhân viên, một trong ba cột đó sẽ có giá trị, hai cột còn lại sẽ là NULL. Để xác định tổng số tiền được trả cho mỗi nhân viên, bạn có thể sử dụng COALESCE để chỉ trả về giá trị không rỗng được tìm thấy trong ba cột đó. 

SELECT EmployeeID,
       COALESCE(HourlyRate * 40,
                WeeklySalary,
                Commission * SalesQty) AS WeeklyEarnings
FROM HR.Wages;

Kết quả có thể trông giống như sau: 

EmployeeID WeeklyEarnings 
1 899.76 
2 1001.00 
3 1298.77 
… … 

NULLIF 

Hàm NULLIF cho phép bạn trả về NULL trong các điều kiện nhất định. Chức năng này có các ứng dụng hữu ích trong các lĩnh vực như làm sạch dữ liệu, khi bạn muốn thay thế các ký tự trống hoặc ký tự giữ chỗ bằng NULL.  

NULLIF nhận hai đối số và trả về NULL nếu chúng tương đương nhau. Nếu chúng không bằng nhau, NULLIF trả về đối số đầu tiên. 

Trong ví dụ này, NULLIF thay thế chiết khấu 0 bằng NULL. Nó trả về giá trị chiết khấu nếu nó không phải là 0: 

SELECT SalesOrderID,
       ProductID,
       UnitPrice,
       NULLIF(UnitPriceDiscount, 0) AS Discount
FROM Sales.SalesOrderDetail;

Kết quả có thể trông giống như sau: 

SalesOrderID ProductID UnitPrice Discount 
71774 836 356.898 NULL 
71780 988 112.998 0.4 
71781 748 818.7 NULL 
71781 985 112.998 0.4 
… … … … 

Mình cũng có một bài viết khác về làm việc với giá trị NULL: TỪ CHUYỆN “ĂN GÌ CŨNG ĐƯỢC” CỦA CHỊ EM PHỤ NỮ LẠI NGHĨ VỀ NULL TRONG SQL, các bạn có thể xem thêm để hiểu kỹ hơn nhé!

Tìm hiểu các bài chia sẻ khác của mình về SQL tại đây.

Tags: #null#sql#tutorials
ShareShareSend
Previous Post

SỬ DỤNG CÂU LỆNH SELECT TRONG SQL

Next Post

SẮP XẾP KẾT QUẢ TRUY VẤN TRONG SQL

Tô Mạnh Hoàng

Tô Mạnh Hoàng

Related Posts

SQL

Temporal table: Lưu trữ và truy vấn dữ liệu quá khứ dễ dàng

May 30, 2023

Temporal table là một loại bảng trong SQL Server có tính năng hỗ trợ lưu trữ dữ liệu tại nhiều khoảng thời gian trong cơ sở dữ liệu.

Data

Dynamic Row-level Security: Tổ chức dữ liệu và phân quyền trong Power BI

May 30, 2023

Phân quyền trong Power BI cho người dùng là một phần quan trọng trong cả quy trình ứng dụng dữ liệu trong doanh nghiệp. Bởi nó ảnh hưởng đến bảo mật dữ liệu và giải quyết các vấn đề...

SQL

Câu lệnh JOIN trong SQL và các lưu ý khi Phân tích dữ liệu

May 11, 2023

Câu lệnh JOIN trong SQL Server (Phép nối) là một trong những kỹ thuật biến đổi dữ liệu quan trọng trong phân tích dữ liệu

Azure

LƯU TRỮ DỮ LIỆU PHI QUAN HỆ VỚI AZURE STORAGE

May 11, 2023

Lưu trữ dữ liệu phi quan hệ như video, ảnh, văn bản tự do, thông tin mã hóa,...bằng kho Azure Table Storage và Azure Blob Storage

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Categories

  • Azure (1)
  • Chuyện nghề (2)
  • Data (6)
  • Power BI (21)
  • Skills & Knowledge (29)
  • SQL (9)
  • Technique (30)
  • Tutorials (38)

Most Popular

  • Câu lệnh JOIN trong SQL và các lưu ý khi Phân tích dữ liệu

    0 shares
    Share 0 Tweet 0
  • XÂY DỰNG BỐ CỤC BÁO CÁO POWER BI

    0 shares
    Share 0 Tweet 0
  • NHỮNG ĐIỀU CẦN BIẾT POWER BI CHO NGƯỜI MỚI BẮT ĐẦU

    0 shares
    Share 0 Tweet 0
  • TÌM HIỂU VỀ IDENTITY VÀ SEQUENCE TRONG SQL 

    0 shares
    Share 0 Tweet 0
  • TÌM HIỂU VỀ CÔNG VIỆC CỦA DATA ANALYST

    0 shares
    Share 0 Tweet 0
  • About me
  • Privacy Policy
hoangtomanh@gmail.com

© 2022 Hoang 's blog

No Result
View All Result
  • Hoang’s Blog
  • Career Stories