sql >> Database >  >> RDS >> Mysql

MySQL ISNULL() uitgelegd

In MySQL is de ISNULL() functie stelt ons in staat om te controleren of een waarde null . is of niet. Als het null is , dan 1 wordt geretourneerd, anders 0 wordt geretourneerd.

Syntaxis

ISNULL(expr)

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

SELECT ISNULL( null );

Resultaat:

1

In dit geval is de uitdrukking null en dus is de output 1 .

Hier is het met een niet-null waarde:

SELECT ISNULL( 'Cake' );

Resultaat:

0

Deze keer is het resultaat 0 (omdat de uitdrukking niet null is ).

Uitdrukkingen

ISNULL() controleert het resultaat van elke uitdrukking. Dus als we bijvoorbeeld het volgende doen:

SELECT ISNULL( 3 / 0 );

We krijgen dit:

1

Dus hoewel we null niet hebben gespecificeerd als het argument is het resultaat van de uitdrukking null , en dus ISNULL() retourneert 1 .

Dit kan duidelijker worden aangetoond met het volgende voorbeeld:

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

Resultaat:

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

In de eerste kolom kunnen we zien dat de berekening zelf resulteerde in een null-waarde, en dus retourneerde de tweede kolom 1 .

Nu we toch bezig zijn, hier zijn de waarschuwingen:

SHOW WARNINGS

Resultaat:

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

We zijn gewaarschuwd dat we hebben geprobeerd te delen door nul (wat resulteert in een null-waarde).

Databasevoorbeeld

Stel dat we een databasetabel hebben zoals deze:

SELECT * FROM Pets;

Resultaat:

+-------+-----------+---------+---------+------------+
| 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 |
+-------+-----------+---------+---------+------------+

Hier is een query die de ISNULL() . gebruikt functie tegen die tabel:

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

Resultaat:

+-------+---------+-----------------+
| 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 |
+-------+---------+-----------------+

In dat geval hebben we een kolom gemaakt met 1 voor alle huisdieren die niets in hun DOB-kolom hebben.

Laten we zeggen dat we alle huisdieren willen terugsturen die geen geboortedatum hebben vermeld (d.w.z. hun DOB veld is null ). In dit geval kunnen we het volgende doen:

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

Resultaat:

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

Dat levert hetzelfde resultaat op als het volgende doen:

SELECT * FROM Pets
WHERE DOB IS NULL;

Resultaat:

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


  1. Hoe voer je een opgeslagen procedure uit in Oracle SQL Developer?

  2. Oracle:wat is de situatie om RAISE_APPLICATION_ERROR te gebruiken?

  3. Hoe gebruik je de WITH-clausule in MySQL?

  4. MySQL varchar-indexlengte