MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak NVL() działa w MariaDB

Z MariaDB 10.3, NVL() może być używany jako alias dla IFNULL() funkcjonować. Dlatego obie funkcje umożliwiają nam zastąpienie wartości NULL inną wartością.

Składnia

NVL(expr1,expr2)

Jeśli expr1 nie jest NULL , NVL() zwraca expr1 ; w przeciwnym razie zwraca expr2 .

Biorąc pod uwagę NVL() jest aliasem dla IFNULL() , możemy również użyć następującej składni:

IFNULL(expr1,expr2)

Obie powyższe składnie zwracają ten sam wynik.

Przykład

Oto podstawowy przykład, który używa NULL stała:

SELECT NVL( null, 'No Value' );

Wynik:

No Value

W tym przypadku użyłem NVL() zamienić wartość NULL na No Value .

Oto, co się dzieje, gdy pierwszym argumentem nie jest NULL :

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

Wynik:

Green

W tym przypadku zwracany jest pierwszy argument, ponieważ nie jest on NULL .

Przykład bazy danych

Załóżmy, że uruchamiamy następujące zapytanie:

SELECT * FROM Employees;

Wynik:

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

Widzimy, że dwa wiersze mają wartości NULL w dept kolumna.

W poniższym zapytaniu używamy NVL() aby zastąpić wartości NULL bardziej znaczącą wartością dla czytelnika:

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

Wynik:

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

Wyrażenia

Oceniana jest bieżąca wartość pierwszego argumentu. Dlatego jeśli dostarczymy wyrażenie podobne do następującego:

SELECT NVL( 4 * 10, 0 );

Otrzymujemy to:

40

Tak więc nie otrzymujemy 4 * 10 część. Otrzymujemy wynik tego wyrażenia (którym w tym przypadku jest 40 ).

To samo dotyczy sytuacji, gdy wynikiem wyrażenia jest NULL :

SELECT NVL( 4 / 0, 0 );

Wynik:

0.0000

Jest to jednak niebezpieczny przykład. Zero to wartość. NULL nie jest.

Zwracanie zera, gdy występuje wartość NULL, może być mylące lub nawet całkowicie błędne. Wyobraź sobie, że mamy do czynienia z cenami. Możemy otrzymać cenę zerową, co może być niepoprawne i kosztować firmę dużo pieniędzy.

W takich przypadkach zwykle lepiej jest użyć bardziej znaczącej wartości, która informuje czytelnika, że ​​nie ma żadnej wartości.

Przykład:

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

Wynik:

No Value

IFNULL() Funkcja

Jak wspomniano, NVL() jest aliasem dla IFNULL() . Dlatego możemy zastąpić NVL() z IFNULL() w każdym z powyższych przykładów.

Przykład:

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

Wynik:

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. Jak działa POKAŻ ZESTAW ZNAKÓW w MariaDB

  2. Maksymalizacja wydajności zapytań do bazy danych dla MySQL — część pierwsza

  3. Odzyskiwanie instancji mySQL z innego konta użytkownika (macOS)

  4. Jak zainstalować MariaDB w Rocky Linux i AlmaLinux

  5. MariaDB POWER() wyjaśnione