MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana NVL() Bekerja di MariaDB

Dari MariaDB 10.3, NVL() dapat digunakan sebagai alias untuk IFNULL() fungsi. Oleh karena itu, kedua fungsi tersebut memungkinkan kita untuk mengganti nilai NULL dengan nilai lain.

Sintaks

NVL(expr1,expr2)

Jika expr1 bukan NULL , NVL() mengembalikan expr1 ; jika tidak, ia mengembalikan expr2 .

Diberikan NVL() adalah alias untuk IFNULL() , kita juga dapat menggunakan sintaks berikut:

IFNULL(expr1,expr2)

Kedua sintaks di atas mengembalikan hasil yang sama.

Contoh

Berikut adalah contoh dasar yang menggunakan NULL konstan:

SELECT NVL( null, 'No Value' );

Hasil:

No Value

Dalam hal ini, saya menggunakan NVL() untuk mengganti nilai NULL dengan No Value .

Inilah yang terjadi ketika argumen pertama bukan NULL :

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

Hasil:

Green

Dalam hal ini, argumen pertama dikembalikan, karena bukan NULL .

Contoh Basis Data

Misalkan kita menjalankan kueri berikut:

SELECT * FROM Employees;

Hasil:

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

Kita dapat melihat bahwa dua baris memiliki nilai NULL di dept kolom.

Dalam kueri berikut, kami menggunakan NVL() untuk mengganti nilai NULL dengan nilai yang lebih berarti bagi pembaca:

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

Hasil:

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

Ekspresi

Nilai saat ini dari argumen pertama dievaluasi. Oleh karena itu, jika kita memberikan ekspresi seperti berikut:

SELECT NVL( 4 * 10, 0 );

Kami mendapatkan ini:

40

Jadi, kami tidak mendapatkan 4 * 10 bagian. Kami mendapatkan hasil dari ekspresi itu (yang dalam hal ini adalah 40 ).

Hal yang sama berlaku ketika hasil ekspresi adalah NULL :

SELECT NVL( 4 / 0, 0 );

Hasil:

0.0000

Namun, ini adalah contoh yang berbahaya. Nol adalah sebuah nilai. NULL tidak.

Mengembalikan nol ketika ada nilai NULL bisa menyesatkan atau bahkan sepenuhnya salah. Bayangkan jika kita berhadapan dengan harga. Kami bisa berakhir dengan harga nol, yang bisa jadi salah dan menghabiskan banyak uang bagi bisnis.

Dalam kasus seperti itu, biasanya lebih baik menggunakan nilai yang lebih bermakna yang menyampaikan kepada pembaca bahwa tidak ada nilai.

Contoh:

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

Hasil:

No value

IFNULL() Fungsi

Seperti yang disebutkan, NVL() adalah alias untuk IFNULL() . Oleh karena itu, kita dapat mengganti NVL() dengan IFNULL() dalam salah satu contoh di atas.

Contoh:

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

Hasil:

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. Cara Menjalankan dan Mengelola Pencadangan MySQL untuk Oracle DBA

  2. Apa yang Baru di MySQL Galera Cluster 4.0

  3. Cara Mengembalikan Elemen dari JSON Array di MariaDB

  4. Bagaimana DATE() Bekerja di MariaDB

  5. Daftar Lengkap Kumpulan Karakter yang Didukung oleh MariaDB