Trong SQLite, nếu bạn cần thay thế kết quả NULL bằng văn bản như “N / A”, “Không” hoặc thậm chí văn bản “NULL”, bạn có thể sử dụng một trong ba giải pháp bên dưới.
Dữ liệu mẫu
Đầu tiên, đây là ví dụ về truy vấn trả về một số giá trị NULL.
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Kết quả:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 3 4 5 +420 2 4172 5
Lưu ý rằng hàng 2, 3 và 4 chứa giá trị NULL trong Fax cột.
Chúng ta có thể sử dụng các phương pháp bên dưới để thay đổi kết quả sao cho các cột NULL hiển thị “N / A”.
Hàm ifnull ()
ifnull()
hàm chấp nhận hai đối số và trả về đối số đầu tiên không phải là NULL. Nếu cả hai đối số là NULL, thì nó trả về NULL.
Vì vậy, đối số đầu tiên phải là giá trị có thể có hoặc không thể null và đối số thứ hai phải là giá trị mà bạn muốn thay thế bất kỳ giá trị NULL nào.
Đây là cách chúng tôi có thể sửa đổi truy vấn trước đó để hiển thị “N / A” ở bất kỳ đâu Fax cột là NULL.
SELECT
CustomerId,
ifnull(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Kết quả:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
Hàm Coalesce ()
coalesce()
rất giống với ifnull()
hàm số. Sự khác biệt là coalesce()
chấp nhận nhiều hơn hai đối số. Nó chỉ trả về đối số không phải NULL đầu tiên.
Do đó, chúng ta có thể sử dụng nó theo cách giống hệt như cách chúng ta sử dụng ifnull()
bằng cách cung cấp hai đối số.
SELECT
CustomerId,
coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Kết quả:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
Lệnh .nullvalue Dot
Khi sử dụng giao diện dòng lệnh SQLite, bạn có thể sử dụng .nullvalue
lệnh dot để giúp bạn không phải sử dụng một trong các hàm trước đó mỗi khi bạn thực hiện một truy vấn.
Khi sử dụng lệnh này, bạn cung cấp một chuỗi sẽ được sử dụng để thay thế các giá trị NULL.
Ví dụ:
.nullvalue N/A
Bây giờ, bất cứ khi nào bạn chạy truy vấn trả về giá trị NULL, chuỗi “N / A” sẽ thay thế các giá trị NULL đó.
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Kết quả:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5