select *,if(sva=1,"male","female") as ssva from taname where sva<>""
Kontrollflussfunktion
CASE-Wert WHEN [Vergleichswert] THEN Ergebnis [WHEN [Vergleichswert] THEN Ergebnis ...] [ELSE-Ergebnis] END CASE WHEN [Bedingung] THEN Ergebnis [WHEN [Bedingung] THEN Ergebnis ...] [ELSE-Ergebnis] ENDE
Im Rückgabeergebnis des ersten Szenarios 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
Der Standardrückgabewerttyp eines CASE-Ausdrucks ist jeder kompatible Sammlungstyp des Rückgabewerts, aber Die konkrete Situation hängt vom 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(Ausdruck1, Ausdruck2, Ausdruck3)
Wenn expr1 TRUE ist (expr1 <> 0 und expr1 <> NULL), ist der Rückgabewert von IF() expr2, andernfalls 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> SELECT IF(1<2,'yes ','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test') ,'test1'),'no','yes');
-> 'no'Wenn
nur einer von expr2 oder expr3 explizit NULL ist, ist der Ergebnistyp der IF()-Funktion der Ergebnistyp des 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
Im ersten gezeigten Beispiel ist der Rückgabewert von IF(0.1) 0, weil 0,1 wird in einen ganzzahligen Wert umgewandelt, 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
Der Rückgabewert von expr2 oder expr3 ist eine Zeichenfolge.
Zeichenfolge
Der Rückgabewert von expr2 oder expr3 ist ein Gleitkommawert.
Gleitkomma
Der Rückgabewert von expr2 oder expr3 ist eine Ganzzahl.
ganze Zahl
Wenn expr2 und expr3 beide Zeichenfolgen sind und bei beiden 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(1/0,10);
-> 10
mysql> SELECT IFNULL(1/0, 'yes');
-> 'yes'
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;
in diesem Beispiel test Die Spalte Typ ist CHAR(4).
NULLIF(expr1,expr2)
Wenn expr1 = expr2 gilt, 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
)
Beachten Sie, dass der von MySQL zweimal erhaltene Wert expr1 ist.