Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyjaśnienie MySQL ISNULL()

W MySQL funkcja ISNULL() funkcja umożliwia nam sprawdzenie, czy wartość jest null albo nie. Jeśli jest null , a następnie 1 jest zwracany, w przeciwnym razie 0 jest zwracany.

Składnia

ISNULL(expr)

Przykład

Oto prosty przykład do zademonstrowania:

SELECT ISNULL( null );

Wynik:

1

W tym przypadku wyrażenie to null więc wynik to 1 .

Tutaj jest z wartością inną niż null wartość:

SELECT ISNULL( 'Cake' );

Wynik:

0

Tym razem wynik to 0 (ponieważ wyrażenie nie jest null ).

Wyrażenia

ISNULL() sprawdza wynik dowolnego wyrażenia. Jeśli więc wykonamy następujące czynności, na przykład:

SELECT ISNULL( 3 / 0 );

Otrzymujemy to:

1

Więc chociaż nie określiliśmy null jako argument wynik wyrażenia to null , a więc ISNULL() zwraca 1 .

Można to wyraźniej zademonstrować na następnym przykładzie:

SELECT 
    3 / 0,
    ISNULL( 3 / 0 );

Wynik:

+-------+-----------------+
| 3 / 0 | ISNULL( 3 / 0 ) |
+-------+-----------------+
|  NULL |               1 |
+-------+-----------------+
1 row in set, 2 warnings (0.00 sec)

W pierwszej kolumnie widzimy, że samo obliczenie dało wartość null, więc druga kolumna zwróciła 1 .

Skoro już przy tym jesteśmy, oto ostrzeżenia:

SHOW WARNINGS

Wynik:

+---------+------+---------------+
| Level   | Code | Message       |
+---------+------+---------------+
| Warning | 1365 | Division by 0 |
| Warning | 1365 | Division by 0 |
+---------+------+---------------+

Ostrzegamy, że próbowaliśmy dzielić przez zero (co daje wartość pustą).

Przykład bazy danych

Załóżmy, że mamy taką tabelę bazy danych:

SELECT * FROM Pets;

Wynik:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
|     9 |         3 |       1 | Woof    | 2020-10-03 |
|    10 |         4 |       5 | Ears    | 2022-01-11 |
+-------+-----------+---------+---------+------------+

Oto zapytanie, które używa ISNULL() funkcja względem tej tabeli:

SELECT
    PetId,
    PetName,
    ISNULL( DOB ) AS "DOB is Missing?"
FROM Pets;

Wynik:

+-------+---------+-----------------+
| PetId | PetName | DOB is Missing? |
+-------+---------+-----------------+
|     1 | Fluffy  |               0 |
|     2 | Fetch   |               0 |
|     3 | Scratch |               0 |
|     4 | Wag     |               0 |
|     5 | Tweet   |               0 |
|     6 | Fluffy  |               0 |
|     7 | Bark    |               1 |
|     8 | Meow    |               1 |
|     9 | Woof    |               0 |
|    10 | Ears    |               0 |
+-------+---------+-----------------+

W takim przypadku utworzyliśmy kolumnę wyświetlającą 1 dla wszystkich zwierząt, które nie mają nic w swojej kolumnie DOB.

Załóżmy, że chcemy zwrócić wszystkie zwierzęta, które nie mają podanej daty urodzenia (tj. ich DOB pole jest null ). W takim przypadku możemy wykonać następujące czynności:

SELECT * FROM Pets
WHERE ISNULL(DOB) = 1;

Wynik:

+-------+-----------+---------+---------+------+
| PetId | PetTypeId | OwnerId | PetName | DOB  |
+-------+-----------+---------+---------+------+
|     7 |         3 |       2 | Bark    | NULL |
|     8 |         2 |       4 | Meow    | NULL |
+-------+-----------+---------+---------+------+

Daje to taki sam wynik, jak wykonanie następujących czynności:

SELECT * FROM Pets
WHERE DOB IS NULL;

Wynik:

+-------+-----------+---------+---------+------+
| PetId | PetTypeId | OwnerId | PetName | DOB  |
+-------+-----------+---------+---------+------+
|     7 |         3 |       2 | Bark    | NULL |
|     8 |         2 |       4 | Meow    | 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. PDO otrzyma ostatni wstawiony identyfikator

  2. Usuń zduplikowane wiersze w MySQL (ignoruje klucz podstawowy)

  3. Przesyłanie strumieniowe dużych zestawów wyników za pomocą MySQL

  4. Korzystanie z Oracle JDeveloper z MySQL Database Service na Oracle Cloud Platform, część 1

  5. MySQL Create View, Replace View i Drop View Statements z przykładami