MySQL では、プロセス制御関数とは、ストアド プロシージャまたは関数の実行フローを制御できるステートメントを指します。一般的に使用されるいくつかのプロセス制御関数を次に示します。
は、IF……ELSE…… の効果を実現します。
# 如果expr1为true,则返回expr2,否则返回expr3 IF(expr1,expr2,expr3)
IF 関数は、次のような三項演算子とよく似ていることがわかります。
// 比较最大数 int a=10; int b=5; // 比较 int bigNum=a>b?a:b;
つまり、IF 関数の 3 つのパラメーターのうち、expr1 は条件式です。 、最終結果は true または false で、条件が true (true) の場合は expr2 が返され、条件が true (false) でない場合は expr3 が返されます。例:
SELECT IF(10>5,10,5) AS bigNum;
# も IF....ELSE... の効果を実現し、バリアントと同等ですIF関数のこと。
# 如果expr1不为NULL,则返回expr1,否则返回expr2 IFNULL(expr1,expr2)
元の条件式は、expr1 が null かどうかを判断するために変換されます。null でない場合は、それ自体 (expr1) です。空の場合は、expr2 です。
SELECT IFNULL(null,'不空') AS notNull
IF 関数と同等
SELECT IF(null IS NULL,null,'不空') AS notNull
expr1 が空かどうかを判断し、空 (true) の場合は expr2 を表示し、空でない (false) 場合は expr2 を表示します。 display expr3
case 関数には 2 つの異なる効果があります
switch case
これは、Java の switch case の効果と同等です。 。つまり、switch 内の変数式の値が、case の後ろにある定数と比較されます。
int week=3; switch (week){ case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("非法数据"); break; }
SQLで表現:
# NOW()函数用于获取当前日期和时间, # WEEKDAY(date)函数,表示返回date对应的工作日索引, # 因为索引从0开始,所以加1;也可以不加1,将when的常量改为工作日索引也可 SELECT CASE WEEKDAY(NOW())+1 WHEN 1 THEN '星期一' WHEN 2 THEN '星期二' WHEN 3 THEN '星期三' WHEN 4 THEN '星期四' WHEN 5 THEN '星期五' WHEN 6 THEN '星期六' WHEN 7 THEN '星期日' ELSE '非法数据' END AS `week`;
関数構造
case 判定対象の変数(フィールド)または式
when 定数 1 の場合、値 1 (またはステートメント 1) が表示されます;
when 定数 2 の場合、値 2 (またはステートメント 2) が表示されます;
...
else を表示値 n またはステートメントにしますn;
end
注:
は Java とは異なり、スイッチではなく case を直接記述し、中括弧はありません
when の直後に定数値を追加します。コロンを書く必要はありません。then を使用します。
then 以降の値が表示されている値の場合は、必要はありません。セミコロンを追加します。then の後にステートメントを追加する場合は、セミコロンを追加する必要があります。
when……then…… 複数のステートメントを指定できます。
int grade=87; if (grade>=90){ System.out.println("优秀"); }else if (grade>=80){ System.out.println("良好"); }else if (grade>=70){ System.out.println("一般"); }else if (grade>=60){ System.out.println("及格"); }else { System.out.println("不及格"); }SQLで表現:
SELECT id,`name`,chinese, CASE WHEN chinese>=90 THEN '优秀' WHEN chinese>=80 THEN '良好' WHEN chinese>=70 THEN '一般' WHEN chinese>=60 THEN '及格' ELSE '不及格' END AS `rank` FROM student関数構造:
case注:when 条件1の場合表示値 1 またはステートメント 1;
when 条件 2 then 値 2 またはステートメント 2 が表示されます;
......
else 値 n またはステートメント n が表示されます
end
以上がMySQLのフロー制御機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。