Hàm NVL của Oracle

Ham Nvl Cua Oracle



Giá trị null là trường bị bỏ trống hoặc không có giá trị được gán.

Giá trị NULL phổ biến trong cơ sở dữ liệu, đặc biệt là khi nhập dữ liệu ngoài. Do đó, trừ khi một cột chứa một ràng buộc để ngăn các giá trị NULL, công cụ cơ sở dữ liệu sẽ có thể sử dụng giá trị NULL cho một giá trị bị thiếu.







Mặc dù các giá trị NULL là phổ biến nhưng chúng có thể dẫn đến các vấn đề về cơ sở dữ liệu vì cơ sở dữ liệu không có giá trị để làm việc. Do đó, nên áp dụng các hành động để xử lý các giá trị NULL trong Truy vấn của bạn.



Trong bài đăng này, chúng ta sẽ tìm hiểu cách chuyển đổi các giá trị NULL trong một bảng nhất định để chứa một giá trị mặc định ít có khả năng gây ra lỗi thao tác trong cơ sở dữ liệu của bạn.



Hàm NVL của Oracle

Như đã đề cập, hàm này cho phép chúng ta thay thế các giá trị NULL bằng các giá trị có ý nghĩa hơn. Cú pháp hàm được cung cấp dưới đây:





NVL ( expr1, expr2 ) ;

Hàm chấp nhận hai đối số chính:

expr1 và expr2 – tham số này xác định giá trị được kiểm tra cho các giá trị NULL. Nếu giá trị của expr1 là NULL, hàm sẽ trả về giá trị của expr2.



Cả hai biểu thức có thể có kiểu dữ liệu giống nhau hoặc khác nhau. Nếu các kiểu dữ liệu tương ứng khác nhau, công cụ cơ sở dữ liệu có thể thực hiện chuyển đổi ngầm để cho phép tương thích với các kiểu dữ liệu. Nếu không thể chuyển đổi các loại dữ liệu tương ứng, công cụ cơ sở dữ liệu sẽ báo lỗi.

Ví dụ về chức năng Oracle NVL() Cách sử dụng

Ví dụ sau minh họa cách sử dụng cơ bản của hàm NVL():

ví dụ 1

Hãy xem xét ví dụ sau:

lựa chọn lvl ( 'xin chào' , 'thế giới' ) từ kép;

Trong ví dụ trước, chúng ta sử dụng hàm NVL() để kiểm tra xem chuỗi ‘hello’ có phải là giá trị NULL hay không. Vì giá trị được cung cấp không phải là null nên hàm sẽ trả về chuỗi 'xin chào'.

ví dụ 2

Xem xét ví dụ thứ hai được hiển thị bên dưới:

lựa chọn lvl ( vô giá trị, 'thế giới' ) từ kép;

Trong trường hợp này, vì biểu thức đầu tiên là giá trị NULL, truy vấn sẽ trả về chuỗi thứ hai như hình bên dưới:

ví dụ 3

Chúng ta cũng có thể sử dụng hàm NVL() để thay thế các giá trị NULl trong bảng cơ sở dữ liệu. Hãy xem xét bảng nhân viên được hiển thị bên dưới:

lựa chọn FIRST_NAME, LAST_NAME, EMAIL, LƯƠNG, HOA HỒNG_PCT từ EMPLOYEES emp;

Bảng kết quả:

Như chúng ta có thể thấy, cột commission_pct chứa các giá trị NULl. Chúng ta có thể tạo một truy vấn để thay thế các giá trị NULL từ cột commission_pct bằng 0, như trong ví dụ bên dưới:

lựa chọn FIRST_NAME, LAST_NAME, EMAIL, LƯƠNG, nvl ( HOA HỒNG_PCT, 0 )
từ NHÂN VIÊN emp;

Trong truy vấn ví dụ trước, chúng tôi sử dụng hàm NVL() để kiểm tra giá trị trong cột commission_pct cho NULL. Nếu có giá trị NULL, chúng tôi trả về 0. Ngược lại, chúng tôi trả về giá trị ban đầu.

Điều này sẽ cho phép chúng tôi thay thế các giá trị NULL trong cột bằng 0, như thể hiện trong bảng kết quả bên dưới:

Chúng ta có thể sử dụng điều này với câu lệnh CẬP NHẬT hoặc lưu trữ giá trị kết quả trong chế độ xem bảng.

Phần kết luận

Trong hướng dẫn này, bạn đã học cách sử dụng hàm Oracle NVL() để thay thế giá trị NULL bằng giá trị mặc định. Bạn nên nhớ rằng mặc dù hàm NVL() gần giống với hàm COALESCE() nhưng hàm NVL() chỉ có thể trả về một giá trị duy nhất. Đồng thời, hàmcolesce() có thể trả về nhiều giá trị.

Nếu bạn đang tìm kiếm một hàm có thể nhận nhiều hơn hai đối số mà không cần sử dụng hàm unity(), hãy xem xét hàm NVL2().