Hầu hết các DBMS chính đều cung cấp cho chúng ta một hàm để thay thế các giá trị null bằng một giá trị khác.
Nhưng tên của hàm có xu hướng khác nhau giữa các DBMS. Ví dụ:SQL Server có ISNULL()
, trong khi các hàm khác (chẳng hạn như MySQL, MariaDB và SQLite) có IFNULL()
chức năng để làm điều tương tự.
Tuy nhiên, để nhầm lẫn giữa các vấn đề, MySQL và MariaDB đều có ISNULL()
hàm hoạt động khác với hàm cùng tên của SQL Server (triển khai của MySQL và MariaDB chỉ chấp nhận một đối số duy nhất và trả về 1
nếu null
của nó và 0
nếu không).
Dù sao, trong trường hợp Cơ sở dữ liệu Oracle, chúng ta có thể sử dụng NVL()
hàm để thay thế các giá trị null bằng một giá trị khác.
Trên thực tế, Cơ sở dữ liệu Oracle cũng có NVL2()
hàm cho phép chúng tôi cung cấp một giá trị khác để sử dụng trong trường hợp đối số đầu tiên không phải là null
.
Nếu chúng ta chỉ muốn kiểm tra xem một giá trị có phải là null
hay không hoặc không, chúng ta có thể sử dụng IS NULL
điều kiện (hoặc IS NOT NULL
cho thử nghiệm ngược lại).
NVL()
Chức năng
Dưới đây là một ví dụ minh họa cách NVL()
chức năng hoạt động:
SELECT NVL(null, 'Run')
FROM DUAL;
Kết quả:
Run
Trong trường hợp đó, đối số đầu tiên là null
và do đó, đối số thứ hai đã được trả về.
Đây là những gì sẽ xảy ra khi đối số đầu tiên không phải là null
:
SELECT NVL('Walk', 'Run')
FROM DUAL;
Kết quả:
Walk
Đối số đầu tiên được trả về.
NVL2()
Chức năng
Như đã đề cập, Cơ sở dữ liệu Oracle cũng cung cấp cho chúng ta NVL2()
hàm số. Hàm này cho phép chúng tôi cung cấp một giá trị khác để sử dụng trong trường hợp đối số đầu tiên không phải là null
.
Dưới đây là một ví dụ về cách nó hoạt động:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Kết quả:
3
Đối số đầu tiên là null
và do đó, đối số thứ ba đã được trả về.
Đây là những gì sẽ xảy ra khi đối số đầu tiên không phải là null
:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Kết quả:
2
Đối số thứ hai được trả về.
IS NULL
và IS NOT NULL
Điều kiện
Nếu chúng ta chỉ muốn tìm hiểu xem một giá trị có phải là null
hay không , chúng ta có thể sử dụng IS NULL
điều kiện so sánh. Ngoài ra, chúng ta có thể sử dụng IS NOT NULL
để kiểm tra xem nó không phải là null
.
Giả sử chúng ta có bảng sau:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Kết quả:
ID | OE # | GIÁ | MÔ HÌNH |
---|---|---|---|
2 | 62150B3278 | - | CAM KẾT |
1 | 62150A3278 | 168 | HILUX |
Trong trường hợp này, PRICE
cột chứa giá trị null cho hàng đầu tiên, nhưng không chứa giá trị cho hàng thứ hai.
Dưới đây là một ví dụ về việc sử dụng IS NULL
so với bảng đó:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Kết quả:
ID | OE # | GIÁ | MÔ HÌNH |
---|---|---|---|
2 | 62150B3278 | - | CAM KẾT |
Chỉ hàng có giá rỗng mới được trả lại.
Đây là những gì sẽ xảy ra khi chúng tôi sử dụng IS NOT NULL
:
SELECT * FROM Autoparts
WHERE Price IS NOT NULL;
Kết quả:
ID | OE # | GIÁ | MÔ HÌNH |
---|---|---|---|
1 | 62150A3278 | 168 | HILUX |
Hàng còn lại được trả lại.