sql >> Databasteknik >  >> RDS >> Mysql

MySQL ISNULL() Förklarat

I MySQL, ISNULL() funktionen gör det möjligt för oss att kontrollera om ett värde är null eller inte. Om det är null , sedan 1 returneras, annars 0 returneras.

Syntax

ISNULL(expr)

Exempel

Här är ett enkelt exempel att visa:

SELECT ISNULL( null );

Resultat:

1

I det här fallet är uttrycket null och så utdata är 1 .

Här är det med en icke-null värde:

SELECT ISNULL( 'Cake' );

Resultat:

0

Den här gången är resultatet 0 (eftersom uttrycket inte är null ).

Uttryck

ISNULL() kontrollerar resultatet av alla uttryck. Så om vi gör följande, till exempel:

SELECT ISNULL( 3 / 0 );

Vi får det här:

1

Så även om vi inte angav null som argument är resultatet av uttrycket null , och så ISNULL() returnerar 1 .

Detta kan demonstreras tydligare med nästa exempel:

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

Resultat:

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

I den första kolumnen kan vi se att själva beräkningen resulterade i ett nollvärde, så den andra kolumnen returnerade 1 .

Medan vi håller på, här är varningarna:

SHOW WARNINGS

Resultat:

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

Vi varnas för att vi försökte dividera med noll (vilket resulterar i ett nollvärde).

Databasexempel

Anta att vi har en databastabell så här:

SELECT * FROM Pets;

Resultat:

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

Här är en fråga som använder ISNULL() funktion mot den tabellen:

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

Resultat:

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

I så fall skapade vi en kolumn som visar 1 för alla husdjur som inte har något i sin DOB-kolumn.

Låt oss säga att vi vill lämna tillbaka alla husdjur som inte har ett födelsedatum (dvs. deras DOB) fältet är null ). I det här fallet kan vi göra följande:

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

Resultat:

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

Det ger samma resultat som att göra följande:

SELECT * FROM Pets
WHERE DOB IS NULL;

Resultat:

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


  1. Hur man distribuerar mycket tillgänglig PostgreSQL med en enda slutpunkt för WordPress

  2. Postgresql ändra kolumntyp från int till UUID

  3. Använda Oracle JDeveloper 12c med Oracle Database 12c på Oracle Cloud Platform, del 3

  4. SQL mindre än () operatör för nybörjare