MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách IFNULL () hoạt động trong MariaDB

Trong MariaDB, IFNULL() hàm cho phép chúng tôi thay thế các giá trị NULL bằng một giá trị khác.

Cú pháp

IFNULL(expr1,expr2)

Nếu expr1 không phải là NULL , IFNULL() trả về expr1 ; nếu không nó trả về expr2 .

Ngoài ra, từ MariaDB 10.3, NVL() có thể được sử dụng làm bí danh cho IFNULL() hàm số. Do đó, chúng tôi có tùy chọn sử dụng cú pháp sau để thay thế:

NVL(expr1,expr2)

Kết quả giống nhau bất kể cú pháp nào được sử dụng.

Ví dụ

Đây là một ví dụ cơ bản sử dụng NULL hằng số:

SELECT IFNULL( null, 'No Value' );

Kết quả:

No Value

Trong trường hợp này, tôi đã sử dụng IFNULL() để thay thế giá trị NULL bằng No Value .

Đây là những gì sẽ xảy ra khi đối số đầu tiên không phải là NULL :

SELECT IFNULL( 'Spicy', 'No Value' );

Kết quả:

Spicy

Trong trường hợp này, đối số đầu tiên được trả về vì nó không phải là NULL .

Ví dụ về cơ sở dữ liệu

Giả sử chúng ta chạy truy vấn sau:

SELECT * FROM Employees;

Kết quả:

empId	name	dept
-----   -----   -----
1	Jess	Sales
2	Rohit	NULL
3	Zohan	Sales
4	Homer	NULL

Chúng ta có thể thấy rằng hai hàng có giá trị NULL trong dept cột.

Trong truy vấn sau, chúng tôi sử dụng IFNULL() để thay thế các giá trị NULL bằng một giá trị có ý nghĩa hơn cho người đọc:

SELECT
    empId,
    name,
    IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;

Kết quả:

empId	name	dept
-----   -----   ----------------
1	Jess	Sales
2	Rohit	Not yet assigned
3	Zohan	Sales
4	Homer	Not yet assigned

Biểu thức

Giá trị hiện tại của đối số đầu tiên được đánh giá. Do đó, nếu chúng tôi cung cấp một biểu thức như sau:

SELECT IFNULL( 3 * 7, 0 );

Chúng tôi nhận được điều này:

21

Vì vậy, chúng tôi không nhận được 3 * 7 phần. Chúng tôi nhận được kết quả của biểu thức đó (trong trường hợp này là 21 ).

Điều này cũng đúng khi kết quả của biểu thức là NULL . Ví dụ:nếu chúng ta chạy đoạn mã sau:

SELECT IFNULL( 3 / 0, 0 );

Chúng tôi nhận được điều này:

0.0000

Tuy nhiên, đây là một ví dụ nguy hiểm. Số không là một giá trị. NULL không phải.

Trả về 0 khi có giá trị NULL có thể gây hiểu lầm hoặc thậm chí sai hoàn toàn. Hãy tưởng tượng nếu chúng ta đang đối phó với giá cả. Chúng ta có thể kết thúc với một mức giá bằng 0, điều này có thể không chính xác và khiến doanh nghiệp tốn rất nhiều tiền.

Do đó, trong những trường hợp như vậy, tốt hơn là sử dụng một giá trị có ý nghĩa hơn để truyền tải cho người đọc rằng không có giá trị nào.

Ví dụ:

SELECT IFNULL( 3 / 0, 'No value' );

Kết quả:

No Value

NVL() Chức năng

Bắt đầu với MariaDB 10.3, NVL() là bí danh cho IFNULL() . Do đó, chúng ta có thể thay thế IFNULL() với NVL() trong bất kỳ ví dụ nào ở trên.

Ví dụ:

SELECT NVL( 3 / 0, 'No value' );

Kết quả:

No Value

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm dấu phần trăm vào một số trong MariaDB

  2. Cách cài đặt Lighttpd với PHP, MariaDB và PhpMyAdmin trong Ubuntu

  3. Triển khai một Nextcloud khả dụng cao với MySQL Galera Cluster và GlusterFS

  4. Cách ATAN () hoạt động trong MariaDB

  5. Cách hoạt động của UTC_DATE () trong MariaDB