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

Jak działa SQLite Nullif()

SQLite nullif() function to przydatna funkcja, która w razie potrzeby pozwala traktować pewne wartości jako NULL.

Nie należy go mylić z ifnull() funkcja, która działa odwrotnie – pozwala traktować wartości NULL jako coś innego.

nullif() funkcja przyjmuje dwa argumenty i zwraca swój pierwszy argument, jeśli argumenty są różne i NULL, jeśli argumenty są takie same.

Składnia

Składnia wygląda tak:

nullif(X,Y)

Funkcja przeszukuje swoje argumenty od lewej do prawej w poszukiwaniu argumentu, który definiuje funkcję porównywania i używa tej funkcji porównywania do wszystkich porównań ciągów. Jeśli żaden argument nie definiuje funkcji zestawiania, używany jest BINARNY.

Przykład

Oto podstawowy przykład do zademonstrowania.

SELECT 
  nullif(123,0),
  nullif(0,0),
  nullif(123,123);

Wynik:

nullif(123,0)  nullif(0,0)  nullif(123,123)
-------------  -----------  ---------------
123                                        

W pierwszej kolumnie te dwie wartości są różne, więc zwracana jest pierwsza wartość.

W drugiej kolumnie obie wartości są takie same, więc zwracane jest NULL.

To samo dotyczy trzeciej kolumny – obie wartości są takie same, więc zwracana jest wartość NULL.

Praktyczny przykład

Oto przykład bazy danych, który demonstruje bardziej praktyczne zastosowanie nullif() funkcja.

Weź poniższą tabelę o nazwie Produkty :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Widget Stick   89.75     
3           Foo Cap        11.99     
4           Free Widget    0.0       
5           Free Foobar    0.0       
6           Free Beer                

Widzimy, że dwa produkty mają cenę zerową. Inny produkt ma cenę NULL.

Teraz wyobraź sobie, że chcemy dowiedzieć się, ile produktów ma pozytywną cenę. Innymi słowy, nie chcemy uwzględniać produktów, które mają cenę lub zero (lub NULL w tym przypadku).

Aby to zrobić, możemy użyć nullif() w połączeniu z count() funkcja.

SELECT count(nullif(Price, 0.00)) 
FROM Products;

Wynik:

3

Otrzymujemy 3 zgodnie z oczekiwaniami, czyli dokładnie ile wierszy ma wartość dodatnią w Cenie kolumna.

Działa to, ponieważ count() funkcja zlicza tylko wartości inne niż NULL. Konwertując kwoty zerowe na NULL, jesteśmy w stanie zignorować te wartości w naszych obliczeniach.

Tutaj znowu bez nullif() funkcja.

SELECT count(Price) 
FROM Products;

Wynik:

5

Tak więc w tym przypadku zawiera kwoty zerowe i otrzymujemy 5. Nadal ignoruje wiersz 6, ponieważ w rzeczywistości ma on wartość NULL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rejestruj czas zapytań w SQLite na Androidzie

  2. Jak łączyć ciągi w SQLite

  3. Połączenie wewnętrzne SQLite

  4. Pula połączeń dla bazy danych „/data/data/msv_database.db” nie może nawiązać połączenia. Połączenia:0 aktywnych, 1 nieaktywnych, 0 dostępnych

  5. Jak dołączyć plik .db z innym Androidem .apk?