SQLite
 sql >> база данни >  >> RDS >> SQLite

Как работи SQLite Nullif().

SQLite nullif() функцията е удобна функция, която ви позволява да третирате определени стойности като NULL, когато е необходимо.

Не бива да се бърка с ifnull() функция, която прави обратното – ви позволява да третирате стойностите NULL като нещо друго.

nullif() функцията приема два аргумента и връща първия си аргумент, ако аргументите са различни, и NULL, ако аргументите са еднакви.

Синтаксис

Синтаксисът е така:

nullif(X,Y)

Функцията търси аргументите си отляво надясно за аргумент, който дефинира функция за съпоставяне и използва тази функция за съпоставяне за всички сравнения на низове. Ако нито един от аргументите не дефинира функция за сортиране, тогава се използва BINARY.

Пример

Ето основен пример за демонстрация.

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

Резултат:

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

В първата колона двете стойности са различни, така че се връща първата стойност.

Във втората колона и двете стойности са еднакви, така че се връща NULL.

Същото важи и за третата колона – и двете стойности са еднакви, така че се връща NULL.

Практически пример

Ето пример за база данни, който демонстрира по-практично използване на nullif() функция.

Вземете следната таблица, наречена Продукти :

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                

Виждаме, че два продукта имат цена нула. Друг продукт има цена NULL.

Сега си представете, че искаме да разберем колко продукта имат положителна цена. С други думи, не искаме да включваме продукти, които имат цена или нула (или NULL в този смисъл).

За да направим това, можем да използваме nullif() във връзка с count() функция.

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

Резултат:

3

Получаваме 3, както се очаква, което е точно колко реда имат положителна стойност в Цената колона.

Това работи, защото count() функцията отчита само стойности, различни от NULL. Преобразувайки нулевите суми в NULL, можем да игнорираме тези стойности в нашето изчисление.

Ето го отново без nullif() функция.

SELECT count(Price) 
FROM Products;

Резултат:

5

Така че в този случай той включва нулевите суми и получаваме 5. Той все още игнорира ред 6, защото той всъщност има стойност 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. UnsatisfiedLinkError в собствения метод

  2. Приложението спря да работи поради база данни

  3. Как да изтеглите и инсталирате инструментите на SQLite

  4. 6 начина за избор на дублиращи се редове в SQLite

  5. Как да получите текущата дата в SQLite