SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Różnica między NullIf() i IfNull() w SQLite

SQLite posiada funkcję o nazwie nullif() i inną funkcję o nazwie ifnull() , z których każdy służy do innego celu.

  • nullif() pozwala traktować pewne wartości jako NULL. Możesz myśleć o tym jako „zwróć NULL, jeśli…”.
  • ifnull() umożliwia zastąpienie wartości NULL inną wartością. Możesz myśleć o tym jako „jeśli NULL, to…”.

Więc w zasadzie robią coś przeciwnego. Jedna zastępuje wartości NULL inną wartością, a druga zastępuje inną wartość NULL.

Przykłady

W niektórych przypadkach obie funkcje mogą zwrócić ten sam wynik. Na przykład:

SELECT
  nullif(1, 2),
  ifnull(1, 2);

Wynik:

nullif(1, 2)  ifnull(1, 2)
------------  ------------
1             1           

nullif() funkcja zwraca kopię swojego pierwszego argumentu, jeśli argumenty są różne i NULL, jeśli argumenty są takie same. W tym przypadku argumenty są różne i zwraca pierwszy argument.

ifnull() z drugiej strony funkcja zwraca kopię pierwszego argumentu innego niż NULL. W tym przypadku oba argumenty były różne od NULL, więc został zwrócony pierwszy argument.

W poniższym przykładzie zaczynamy dostrzegać różnicę między tymi dwiema funkcjami:

SELECT
  nullif(1, 1),
  ifnull(1, 1);

Wynik:

nullif(1, 1)  ifnull(1, 1)
------------  ------------
              1           

nullif() funkcja zwraca NULL, gdy oba argumenty były takie same. W tym przypadku oba argumenty były takie same, więc nullif() wykonał swoją pracę i zwrócił NULL.

ifnull() funkcja zwraca pierwszy argument inny niż NULL, więc w tym przypadku zwróciła pierwszy argument.

Fakt, że oba argumenty są takie same, nic nie znaczy dla ifnull() . Po prostu zwraca pierwszy argument inny niż NULL. To powiedziawszy, jeśli oba argumenty są NULL, to zwraca NULL.

Spróbujmy dodać kilka wartości NULL.

SELECT
  nullif(NULL, 1),
  ifnull(NULL, 1);

Wynik:

nullif(NULL, 1)  ifnull(NULL, 1)
---------------  ---------------
                 1              

W tym przypadku nullif() zwrócił NULL, ponieważ NULL jest pierwszym argumentem (przypomnij sobie, że nullif() zwraca swój pierwszy argument, jeśli oba argumenty są różne).

ifnull() z drugiej strony zwrócił swój pierwszy argument inny niż NULL.

Oto, jak to wygląda, gdy zamienimy się argumentami.

SELECT
  nullif(1, NULL),
  ifnull(1, NULL);

Wynik:

nullif(1, NULL)  ifnull(1, NULL)
---------------  ---------------
1                1              

Oba argumenty są różne, więc nullif() zwraca pierwszy argument.

Pierwszy argument nie ma wartości NULL, więc ifnull() zwraca go.


  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 funkcja Strftime() w SQLite

  2. nullvalue:Pokaż wartości NULL w SQLite

  3. java.lang.IllegalStateException:Nie można odczytać wiersza 0, col -1 z CursorWindow — problem z sqlite dla Androida

  4. java.util.MissingFormatArgumentException:Specyfikator formatu:s

  5. java.lang.OutOfMemoryError:[wyczerpana pamięć] podczas odczytu danych z Sqlite Android