select *,if(sva=1,"男","女") as ssva from taname where sva<>""
12.2. 制御フロー関数
CASE 値 WHEN [比較値] THEN 結果 [WHEN [比較値] THEN 結果 ...] [ELSE 結果] END CASE WHEN [条件] THEN 結果 [WHEN [条件] THEN 結果 ...] [ELSE 結果]終わり
最初のシナリオの戻り結果では、値=比較値になります。 2 番目のシナリオの戻り結果は、最初のシナリオの真の結果です。一致する結果値がない場合、戻り値は ELSE 以降の結果になります。ELSE 部分がない場合、戻り値は 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
CASE 式のデフォルトの戻り値の型は、戻り値の互換性のある任意のコレクション型です。具体的な状況はコンテキストによって異なります。文字列コンテキストで使用された場合は、結果の文字列を返します。数値コンテキストで使用した場合、結果は 10 進数、実数、または整数値として返されます。
IF(式1,式2,式3)
expr1 が TRUE (expr1 <> 0 および expr1 <> NULL) の場合、IF() の戻り値は expr2 であり、それ以外の場合、戻り値は expr3 です。 IF() の戻り値は、コンテキストに応じて数値または文字列値のいずれかになります。
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'expr2
または expr3 の 1 つだけが明示的に NULL の場合、IF() 関数の結果の型は非 NULL 式の結果の型になります。 。
expr1 は整数値として評価されます。つまり、浮動小数点値または文字列値を検証する場合は、比較演算を使用してチェックする必要があります。
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
示されている最初の例では、IF(0.1) の戻り値は 0 です。 0.1 は整数値に変換され、IF(0) のテストが行われます。これはあなたが望む状況ではないかもしれません。 2 番目の例では、比較により元の浮動小数点値がゼロ以外であるかどうかがチェックされます。比較結果には整数を使用します。
IF() のデフォルトの戻り値の型 (これは一時テーブルに格納される場合に重要です) は次のように計算されます
。
戻り値
expr2 または expr3 の戻り値は文字列です。
弦
expr2 または expr3 の戻り値は浮動小数点値です。
浮動小数点
expr2 または expr3 の戻り値は整数です。
整数
expr2 と expr3 が両方とも文字列であり、どちらかの文字列が大文字と小文字を区別する場合、返される結果は大文字と小文字が区別されます。
http://blog.knowsky.com/
IFNULL(式1,式2)
expr1 が NULL でない場合、IFNULL() の戻り値は expr1 になります。それ以外の場合、戻り値は expr2 になります。 IFNULL() の戻り値は、使用されるコンテキストに応じて、数値または文字列のいずれかになります。
mysql> SELECT IFNULL(1,0);
-> 1
mysql
> SELECT IFNULL(NULL,10)
;
-> 10
mysql> SELECT IFNULL(1/0, 'yes');
-> 'yes'
IFNULL(expr1,expr2) のデフォルトの結果値は、STRING、REAL、INTEGER の順で、2 つの式のうちのより「一般的な」方です。式ベースのテーブルの場合、または MySQL が IFNULL() の戻り値をメモリ内の一時テーブルに保存する必要があると仮定します。
CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;
この例では、列をテストします。型はCHAR(4)です。
NULLIF(式1,式2)
expr1 = expr2 が成立する場合、戻り値は NULL になり、それ以外の場合、戻り値は expr1 になります。これは CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END と同じです。
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
-> 1
パラメータが等しくない場合、MySQL によって 2 回取得される値は expr1 であることに注意してください。