構文:
CASE value WHEN [比較値] THEN 結果 [WHEN [比較値] THEN 結果 ...] [ELSE 結果 ] END CA SE いつ[condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
最初のソリューションの戻り結果では、value=比較-価値。 2 番目のシナリオの戻り結果は、最初のシナリオの真の結果です。一致する結果値がない場合、戻り値は ELSE 以降の結果になります。ELSE 部分がない場合、戻り値は NULL になります。
mysql>SELECT CASE WHEN 1 THEN 'one'
-> SELECT CASE WHEN 1>THEN 'true' ELSE 'false' END; mysql>
SELECT CASE BINARY 'B'->THEN 2 END;
->NULL CASE式のデフォルトの戻り値の型は、互換性のある戻り値のコレクション型ですが、特定の状況によって異なります。それが使用される文脈に基づいて。文字列コンテキストで使用された場合は、結果の文字列を返します。数値コンテキストで使用した場合、結果は 10 進数、実数、または整数値として返されます。IF(
expr1,expr2
,expr3
)expr1がTRUE (expr1 <> および expr1 < ;> NULL)、その後 IF () の戻り値は expr2
; それ以外の場合、戻り値はmysql>SELECT IF(1>2,2,3);->3mysql>SELECT IF(1
-> ; 'はい'mysql> SELECT IF('test','test1'),'no','yes');
-> 'no'if expr2
またはexpr3
の 1 つだけが明示的に NULL である場合、IF() 関数の結果の型は、非 NULL 式の結果の型になります。expr1
は整数値として計算されます。つまり、浮動小数点値または文字列値を検証する場合は、比較演算を使用してチェックする必要があります。 mysql>SELECT IF(0.1,1,0); mysql> 最初の例では、 (0.1) は、0.1 が整数値に変換され、IF(0) のテストが行われるため、0 を返します。これはあなたが望む状況ではないかもしれません。 2 番目の例では、比較により元の浮動小数点値がゼロ以外であるかどうかがチェックされます。比較結果には整数を使用します。
IF() のデフォルトの戻り値の型 (これは一時テーブルに格納される場合に重要です) は次のように計算されます:
expression
return valueexpr2
または
expr3戻り値は文字列です。
expr2 | またはexpr3 戻り値は浮動小数点値です。 | 浮動小数点
expr2またはexpr3 | 戻り値は整数です。整数 |
expr2 と expr3 が両方とも文字列で、いずれかの文字列が大文字と小文字を区別する場合、返される結果は大文字と小文字が区別されます。
expr1がNULLでない場合、IFNULL()の戻り値はexpr1、それ以外の場合、戻り値はexpr2です。 IFNULL() の戻り値は、使用されるコンテキストに応じて数値または文字列のいずれかになります。 mysql>SELECT IFNULL(1,0); ->-> ; /0,10) ; -&gt; of は、STRING、REAL、または INTEGER の順で、2 つの式のうち、より「一般的」な式です。式ベースのテーブルの場合、または MySQL が IFNULL() の戻り値をメモリ内の一時テーブルに保存する必要があるとします。 CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;この例では、テスト列の型は CHAR(4) です。NULLIF( expr1 ,expr2) expr1 = expr2がtrueの場合、戻り値はNULL、それ以外の場合、戻り値はexpr1 です。これは CASE WHENexpr1 =expr2 THEN NULL ELSE
|