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 ( und expr1 <> 0 ), expr1 IST NICHT NULLIF() gibt expr2 zurück . Andernfalls wird expr3 zurückgegeben .
Rückgabetyp
- Falls
expr2oderexpr3erzeugt einen String, das Ergebnis ist ein String. Wennexpr2undexpr3beide Zeichenfolgen sind und bei einer der Zeichenfolgen zwischen Groß- und Kleinschreibung unterschieden wird, wird beim Ergebnis zwischen Groß- und Kleinschreibung unterschieden. - Falls
expr2oderexpr3einen Fließkommawert erzeugen, ist das Ergebnis ein Fließkommawert. - Falls
expr2oderexpr3eine 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.