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

Jak działa IFNULL() w MariaDB

W MariaDB funkcja IFNULL() funkcja pozwala nam zastąpić wartości NULL inną wartością.

Składnia

IFNULL(expr1,expr2)

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

Ponadto, z MariaDB 10.3, NVL() może być używany jako alias dla IFNULL() funkcjonować. Dlatego zamiast tego mamy możliwość użycia następującej składni:

NVL(expr1,expr2)

Wynik jest taki sam, niezależnie od użytej składni.

Przykład

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

SELECT IFNULL( null, 'No Value' );

Wynik:

No Value

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

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

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

Wynik:

Spicy

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 IFNULL() aby zastąpić wartości NULL bardziej znaczącą wartością dla czytelnika:

SELECT
    empId,
    name,
    IFNULL( 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 IFNULL( 3 * 7, 0 );

Otrzymujemy to:

21

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

To samo dotyczy sytuacji, gdy wynikiem wyrażenia jest NULL . Na przykład, jeśli uruchomimy następujący kod:

SELECT IFNULL( 3 / 0, 0 );

Otrzymujemy to:

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.

Dlatego 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 IFNULL( 3 / 0, 'No value' );

Wynik:

No Value

NVL() Funkcja

Począwszy od MariaDB 10.3, NVL() jest aliasem dla IFNULL() . Dlatego możemy zastąpić IFNULL() z NVL() w każdym z powyższych przykładów.

Przykład:

SELECT NVL( 3 / 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. Odkrywanie różnych sposobów szyfrowania danych MariaDB

  2. Łatwe tworzenie zapory SQL dzięki ClusterControl i ProxySQL

  3. Jak wyświetlić wszystkie procedury składowane w MariaDB?

  4. 2 sposoby na zastąpienie podciągu w MariaDB

  5. MariaDB JSON_TABLE() Objaśnienie