Mysqlシリーズ(10) Mysqlの条件判断

黄舟
リリース: 2017-01-22 16:55:34
オリジナル
1307 人が閲覧しました

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 結果] END
最初の解の戻り結果では、値 =比較値。 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(expr1,expr2,expr3)
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
ログイン後にコピー

最初に示した例では、0.1 が整数値に変換され、IF(0) のテストが行​​われるため、IF(0.1) は 0 を返します。これはあなたが望む状況ではないかもしれません。 2 番目の例では、比較により元の浮動小数点値がゼロ以外であるかどうかがチェックされます。比較結果には整数を使用します。

IF() のデフォルトの戻り値のタイプ (これは一時テーブルに格納される場合に重要です) は次のように計算されます:

expression
戻り値

expr2 または expr3 戻り値は文字列です。
文字列

expr2 または expr3 の戻り値は浮動小数点値です。
浮動小数点

expr2 または expr3 は整数を返します。
Integer

expr2 と expr3 が両方とも文字列で、いずれかの文字列が大文字と小文字を区別する場合、返される結果は大文字と小文字が区別されます。
http://blog.knowsky.com/
IFNULL(expr1,expr2)
expr1 が NULL でない場合、IFNULL() の戻り値は expr1 です。それ以外の場合、戻り値は expr2 です。 IFNULL() の戻り値は、使用されるコンテキストに応じて、数値または文字列のいずれかになります。

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
ログイン後にコピー

IF​​NULL(expr1,expr2) のデフォルトの結果値は、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 WHEN expr1 = expr2 THEN NULL ELSE expr1 END と同じです。

mysql> SELECT NULLIF(1,1);
        -> NULL
mysql> SELECT NULLIF(1,2);
        -> 1
ログイン後にコピー

パラメータが等しくない場合、MySQL で 2 回取得される値は expr1 になることに注意してください

上記は Mysql シリーズ (10) Mysql の条件判断の内容です。さらに関連する内容については、PHP 中国語 Web サイトを参照してください。 (www.php.cn)!

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート