Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL-Serie (10) MySQL-bedingte Beurteilung

黄舟
Freigeben: 2017-01-22 16:55:34
Original
1307 Leute haben es durchsucht

Wählen Sie *,if(sva=1,"männlich","weiblich") als ssva aus taname, wobei sva<>""

12.2. Kontrollflussfunktion
CASE-Wert WHEN [vergleiche -value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
at Im Rückgabeergebnis der ersten Lösung ist value=compare-value. 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;
        -> one
mysql> SELECT CASE WHEN 1>0 THEN true ELSE false END;
        -> true
mysql> SELECT CASE BINARY B
    ->     WHEN a THEN 1 WHEN b THEN 2 END;
        -> NULL
Nach dem Login kopieren

Der Standardrückgabewerttyp eines CASE-Ausdrucks ist jeder kompatible Sammlungstyp von Rückgabewerten, die spezifische Situation hängt jedoch vom Kontext ab, in dem er verwendet wird. 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; Rückgabewert Dann ist es 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> SELECT IF(1<2,yes ,no);
        -> yes
mysql> SELECT IF(STRCMP(test,test1),no,yes);
        -> no
Nach dem Login kopieren

Wenn nur einer von expr2 oder expr3 explizit NULL ist, ist der Ergebnistyp der IF()-Funktion 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> SELECT IF(0.1<>0,1,0);
        -> 1
Nach dem Login kopieren

Im ersten gezeigten Beispiel gibt IF(0,1) 0 zurück, da 0,1 in einen ganzzahligen Wert konvertiert wird, was einen Test für 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

Der Rückgabewert von expr2 oder expr3 ist eine Zeichenfolge.
String

Der Rückgabewert von expr2 oder expr3 ist ein Gleitkommawert.
Gleitkomma

Der Rückgabewert von expr2 oder expr3 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.
http://blog.knowsky.com/
IFNULL(expr1,expr2)
Wenn expr1 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> SELECT IFNULL(NULL,10);
        -> 10
mysql> SELECT IFNULL(1/0,10);
        -> 10
mysql> SELECT IFNULL(1/0,yes);
        -> yes
Nach dem Login kopieren

Der Standardergebniswert von IFNULL(expr1,expr2) 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 Speicher speichern:

CREATE TABLE tmp SELECT IFNULL(1,test) AS test;
Nach dem Login kopieren

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

NULLIF(expr1,expr2)
Wenn expr1 = expr2 wahr ist, 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);
        -> NULL
mysql> SELECT NULLIF(1,2);
        -> 1
Nach dem Login kopieren

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

Das Obige ist der Inhalt der MySQL-Serie (10). MySQL-Bedingungsbeurteilung Weitere Informationen Inhalt, bitte folgen Sie der chinesischen PHP-Website (www.php.cn)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage