Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL IF() Funktion erklärt

MySQL hat ein IF() Funktion, die eine bequeme Möglichkeit bietet, eine einfache „IF/ELSE“-Operation durchzuführen.

Es funktioniert ähnlich wie ein einfaches IF /ELSE -Anweisung, da sie es uns ermöglicht, auf eine Bedingung zu prüfen und je nachdem, ob sie wahr ist oder nicht, ein anderes Ergebnis zurückzugeben.

Genauer gesagt, wenn das erste Argument für IF() Funktion wahr ist, wird das zweite Argument zurückgegeben. Wenn es nicht wahr ist, wird das dritte Argument zurückgegeben.

Syntax

IF(expr1,expr2,expr3)

Wenn expr1 ist TRUE (expr1 <> 0 und expr1 IST NICHT NULL ), IF() gibt expr2 zurück . Andernfalls wird expr3 zurückgegeben .

Rückgabetyp

  • Falls expr2 oder expr3 erzeugt einen String, das Ergebnis ist ein String. Wenn expr2 und expr3 beide Zeichenfolgen sind und bei einer der Zeichenfolgen zwischen Groß- und Kleinschreibung unterschieden wird, wird beim Ergebnis zwischen Groß- und Kleinschreibung unterschieden.
  • Falls expr2 oder expr3 einen Fließkommawert erzeugen, ist das Ergebnis ein Fließkommawert.
  • Falls expr2 oder expr3 eine ganze Zahl erzeugen, ist das Ergebnis eine ganze Zahl.

Beispiel

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie es funktioniert:

SELECT IF( 1 > 2, 'Yes', 'No' );

Ergebnis:

No

Hier haben wir überprüft, ob 1 größer als 2 ist oder nicht. Das ist es nicht, und so wurde das dritte Argument zurückgegeben.

Folgendes passiert, wenn der erste Ausdruck wahr ist:

SELECT IF( 2 > 1, 'Yes', 'No' );

Ergebnis:

Yes

Datenbankbeispiel

Hier ist ein Beispiel, das IF() verwendet Funktion beim Abfragen einer Datenbank:

SELECT 
    Name,
    Population,
    IF( Population > 10000000, 'Big', 'Small' ) AS "Big/Small"
FROM Country
ORDER BY Name ASC
LIMIT 10;

Ergebnis:

+---------------------+------------+-----------+
| Name                | Population | Big/Small |
+---------------------+------------+-----------+
| Afghanistan         |   22720000 | Big       |
| Albania             |    3401200 | Small     |
| Algeria             |   31471000 | Big       |
| American Samoa      |      68000 | Small     |
| Andorra             |      78000 | Small     |
| Angola              |   12878000 | Big       |
| Anguilla            |       8000 | Small     |
| Antarctica          |          0 | Small     |
| Antigua and Barbuda |      68000 | Small     |
| Argentina           |   37032000 | Big       |
+---------------------+------------+-----------+

Verschachteltes IF() Funktionen

Es ist möglich, IF() zu verschachteln Funktionen, um mehr als ein binäres Ergebnis zu liefern.

Zum Beispiel:

SELECT 
    Name,
    Population,
    IF( 
        Population > 10000000, 
        IF( Population > 100000000, 'REALLY Big', 'Big' ), 
        'Small' 
        ) AS "Size"
FROM Country
WHERE Region = 'Southern and Central Asia'
ORDER BY Population DESC;

Ergebnis:

+--------------+------------+------------+
| Name         | Population | Size       |
+--------------+------------+------------+
| India        | 1013662000 | REALLY Big |
| Pakistan     |  156483000 | REALLY Big |
| Bangladesh   |  129155000 | REALLY Big |
| Iran         |   67702000 | Big        |
| Uzbekistan   |   24318000 | Big        |
| Nepal        |   23930000 | Big        |
| Afghanistan  |   22720000 | Big        |
| Sri Lanka    |   18827000 | Big        |
| Kazakstan    |   16223000 | Big        |
| Tajikistan   |    6188000 | Small      |
| Kyrgyzstan   |    4699000 | Small      |
| Turkmenistan |    4459000 | Small      |
| Bhutan       |    2124000 | Small      |
| Maldives     |     286000 | Small      |
+--------------+------------+------------+

Nullen und Nullen

Wenn der erste Ausdruck entweder NULL ist oder 0 , dann ist es falsch und der zweite Wert wird zurückgegeben:

SELECT
    IF( 1, 'True', 'False' ) AS "1",
    IF( null, 'True', 'False' ) AS "Null",
    IF( 0, 'True', 'False' ) AS "Zero";

Ergebnis:

+------+-------+-------+
| 1    | Null  | Zero  |
+------+-------+-------+
| True | False | False |
+------+-------+-------+

Hier ist die erste Spalte wahr, weil sie zu 1 aufgelöst wird. Die anderen beiden Spalten geben das zweite Argument zurück, weil ihr erstes Argument null war und 0 bzw..

Hier ist ein Datenbankbeispiel:

SELECT 
    Name,
    GNPOld,
    IF( GNPOld, GNPOld, 'None' )
FROM Country
ORDER BY Name ASC
LIMIT 10;

Ergebnis:

+---------------------+-----------+------------------------------+
| Name                | GNPOld    | IF( GNPOld, GNPOld, 'None' ) |
+---------------------+-----------+------------------------------+
| Afghanistan         |      NULL | None                         |
| Albania             |   2500.00 | 2500.00                      |
| Algeria             |  46966.00 | 46966.00                     |
| American Samoa      |      NULL | None                         |
| Andorra             |      NULL | None                         |
| Angola              |   7984.00 | 7984.00                      |
| Anguilla            |      NULL | None                         |
| Antarctica          |      NULL | None                         |
| Antigua and Barbuda |    584.00 | 584.00                       |
| Argentina           | 323310.00 | 323310.00                    |
+---------------------+-----------+------------------------------+

Obwohl in diesem Fall das gleiche Ergebnis mit etwas weniger Code unter Verwendung von IFNULL() hätte erreicht werden können Funktion oder sogar die COALESCE() Funktion.