ホームページ >データベース >mysql チュートリアル >MySQLのフロー制御機能の使い方

MySQLのフロー制御機能の使い方

WBOY
WBOY転載
2023-05-28 15:58:17962ブラウズ

MySQL では、プロセス制御関数とは、ストアド プロシージャまたは関数の実行フローを制御できるステートメントを指します。一般的に使用されるいくつかのプロセス制御関数を次に示します。

1.IF 関数

は、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;

MySQLのフロー制御機能の使い方

2.IFNULL 関数

# も IF....ELSE... の効果を実現し、バリアントと同等ですIF関数のこと。

# 如果expr1不为NULL,则返回expr1,否则返回expr2
IFNULL(expr1,expr2)

元の条件式は、expr1 が null かどうかを判断するために変換されます。null でない場合は、それ自体 (expr1) です。空の場合は、expr2 です。

SELECT IFNULL(null,'不空') AS notNull

MySQLのフロー制御機能の使い方

IF 関数と同等

SELECT IF(null IS NULL,null,'不空') AS notNull

expr1 が空かどうかを判断し、空 (true) の場合は expr2 を表示し、空でない (false) 場合は expr2 を表示します。 display expr3

3.CASE 関数

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`;

MySQLのフロー制御機能の使い方

関数構造

case 判定対象の変数(フィールド)または式
when 定数 1 の場合、値 1 (またはステートメント 1) が表示されます;
when 定数 2 の場合、値 2 (またはステートメント 2) が表示されます;
...
else を表示値 n またはステートメントにしますn;
end

注:

  • は Java とは異なり、スイッチではなく case を直接記述し、中括弧はありません

  • when の直後に定数値を追加します。コロンを書く必要はありません。then を使用します。

  • then 以降の値が表示されている値の場合は、必要はありません。セミコロンを追加します。then の後にステートメントを追加する場合は、セミコロンを追加する必要があります。

  • when……then…… 複数のステートメントを指定できます。

  • #デフォルトは else です。

  • は end

4 で終わります。複数の IF

は、Java の複数の if 判定に似ています。

		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

MySQLのフロー制御機能の使い方

関数構造:

case

when 条件1の場合表示値 1 またはステートメント 1;
when 条件 2 then 値 2 またはステートメント 2 が表示されます;
......
else 値 n またはステートメント n が表示されます
end

注:

  • case の後に条件はありません

  • case の後に条件がある場合、結果は true になりますまたは false; 条件が満たされている then を実行し、次の値またはステートメントを表示します

  • 同じ then の後に表示された値が続く場合は、セミコロンを追加する必要はありません。 then の後にステートメントを追加する場合は、セミコロンが必要です。

以上がMySQLのフロー制御機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。