Heim  >  Artikel  >  Datenbank  >  MySQL Basic Tutorial 6 – Funktionskontrollflussfunktion

MySQL Basic Tutorial 6 – Funktionskontrollflussfunktion

黄舟
黄舟Original
2017-02-24 11:09:341019Durchsuche

Syntax:

  • CASE Wert WHEN [Vergleichswert] THEN Ergebnis [WHEN [Vergleichswert] THEN Ergebnis ...] [ELSE Ergebnis] END CASE WHEN [Bedingung] DANN Ergebnis [WHEN [Bedingung] DANN Ergebnis ...] [ELSE Ergebnis] ENDE

at Im Rückgabeergebnis der ersten Lösung ist Wert=Vergleichswert. Das Rückgabeergebnis des zweiten Szenarios ist das wahre Ergebnis des ersten Szenarios. Wenn kein passender Ergebniswert vorhanden ist, ist das Rückgabeergebnis das Ergebnis nach ELSE. Wenn kein ELSE-Teil vorhanden ist, ist der Rückgabewert NULL.

mysql> SELECT CASE 1 WHEN 1 THEN 'one'

-WHEN 2 THEN 'two' ELSE 'more' END;

-> 'eins'

mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;

-> ; 'true'

mysql> SELECT CASE BINARY 'B'

->

-> NULL

Der Standardrückgabewerttyp eines CASE-Ausdrucks ist jeder kompatible Sammlungstyp des Rückgabewerts, die spezifische Situation hängt jedoch von seinem Kontext ab. Bei Verwendung in einem Zeichenfolgenkontext wird die resultierende Zeichenfolge zurückgegeben. Bei Verwendung in einem numerischen Kontext wird das Ergebnis als Dezimal-, Real- oder Ganzzahlwert zurückgegeben.

  • IF(

    expr1,expr2,expr3)

Wenn

expr1 TRUE ist (expr1 <> 0 und expr1 <> NULL), dann ist der Rückgabewert von IF() expr2 ; Ansonsten ist der Rückgabewert expr3. Der Rückgabewert von IF() ist je nach Kontext entweder ein numerischer Wert oder ein String-Wert.

mysql>

SELECT IF(1>2,2,3);

-> 3

mysql> 1<2,'ja','nein');

-> 'ja'

mysql>

SELECT IF(STRCMP('test','test1 '),'nein','ja');

-> 'nein'

wenn

expr2

oder expr3 Wenn nur einer ist explizit NULL, der Ergebnistyp der IF()-Funktion ist der Ergebnistyp eines Nicht-NULL-Ausdrucks.

expr1

wird als ganzzahliger Wert ausgewertet. Wenn Sie also einen Gleitkommawert oder einen Zeichenfolgenwert validieren, sollten Sie zur Überprüfung Vergleichsoperationen verwenden. mysql>

SELECT IF(0.1,1,0);

-> 0

mysql> ;>0,1,0);

-> 1

Im ersten gezeigten Beispiel ist der Rückgabewert von IF(0.1) 0, da 0.1 konvertiert wird auf einen ganzzahligen Wert, was einen Test von IF(0) auslöst. Dies ist möglicherweise nicht die gewünschte Situation. Im zweiten Beispiel prüft der Vergleich den ursprünglichen Gleitkommawert, um festzustellen, ob er ungleich Null ist. Verwenden Sie ganze Zahlen für Vergleichsergebnisse. Der Standardrückgabetyp von

IF() (dies ist wichtig, wenn es in einer temporären Tabelle gespeichert wird) wird wie folgt berechnet:

Ausdruck

Rückgabewert
表达式 返回值
expr2 或expr3 返回值为一个字符串。 字符串
expr2 或expr3 返回值为一个浮点值。 浮点
expr2 或 expr3 返回值为一个整数。 整数
expr2 oder expr3 Der Rückgabewert ist ein String. String
expr2 oder expr3 Der Rückgabewert ist ein Gleitkommawert. Gleitkomma
expr2 oder expr3 Der Rückgabewert ist eine Ganzzahl. Ganzzahl

Wenn expr2 und expr3 beide Zeichenfolgen sind und bei einer der Zeichenfolgen die Groß-/Kleinschreibung beachtet wird, wird beim zurückgegebenen Ergebnis die Groß-/Kleinschreibung beachtet.

  • IFNULL(expr1,expr2)

ifexpr1 Wenn es nicht NULL ist, ist der Rückgabewert von IFNULL() expr1; andernfalls ist der Rückgabewert expr2. Der Rückgabewert von IFNULL() ist je nach Kontext, in dem er verwendet wird, entweder eine Zahl oder ein String.

mysql> SELECT IFNULL(1,0);

-> 1

mysql> ;

-> 10

mysql>

SELECT IFNULL(1/0,10);

-> >

mysql>

SELECT IFNULL(1/0,'yes');

-> 'yes'

IFNULL(

expr1

,expr2) Der Standardergebniswert ist der „allgemeinere“ der beiden Ausdrücke in der Reihenfolge STRING, REAL oder INTEGER. Angenommen, es handelt sich um eine ausdrucksbasierte Tabelle, oder MySQL muss den Rückgabewert von IFNULL() in einer temporären Tabelle im internen Speicher speichern: CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;

In diesem Beispiel ist die Testspalte vom Typ CHAR(4).

    NULLIF(
  • expr1

    ,expr2)

  • if
expr1

= expr2 wahr ist, dann ist der Rückgabewert NULL, andernfalls ist der Rückgabewert expr1. Dies ist dasselbe wie CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END. mysql>

SELECT NULLIF(1,1);

-> ;

-> 1

Beachten Sie, dass der von MySQL zweimal erhaltene Wert expr1 ist, wenn die Parameter nicht gleich sind.

Das Obige ist der Inhalt des MySQL Basic Tutorial 6 – Function Control Process Function. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn