MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MYSQL制御フロー関数CASEはどのように機能しますか?


MySQL CASEステートメントは、SELECTやWHERE句などのクエリ内に条件を作成できるようにするフロー制御関数です。 CASEステートメントには2つの構文があります

構文-1

CASE val
WHEN compare_val1 THEN result1
WHEN compare_val2 THEN result2
.
.
.
Else result
END

この最初の構文では、valが compare_val1と等しい場合 次に、CASEステートメントは result1を返します 。 valがcompare_val2と等しい場合 次に、CASEステートメントは result2を返します など。

valがcompare_valと一致しない場合、CASEステートメントは結果を返します。 ELSEで指定 条項。

mysql> Select CASE 100
    -> WHEN 100 THEN 'It is matched'
    -> WHEN 200 THEN 'It is not matched'
    -> ELSE 'No use of this Number'
    -> END as 'Matching the Number';
+---------------------+
| Matching the Number |
+---------------------+
| It is matched       |
+---------------------+
1 row in set (0.06 sec)

構文-2

CASE
WHEN condition_1 THEN result1
WHEN condition_2 THEN result2
.
.
.
Else result
END

この2番目の構文では、CASEステートメントは result1、result2などを返します。 。条件が真の場合。すべての条件がfalseの場合、CASEステートメントは結果を返します ELSEで指定 条項。

mysql> Select CASE
    -> WHEN (100 = 100) THEN 'It is Matched'
    -> WHEN (200 = 100) Then 'It is Not Matched'
    -> Else 'No use of Number'
    -> END as 'Matching the Number';
+---------------------+
| Matching the Number |
+---------------------+
| It is Matched       |
+---------------------+
1 row in set (0.00 sec)

  1. MySQL関数からテーブルを返す方法は?

    MySQL関数からテーブルを返すことはできません。この関数は、文字列、整数、文字などを返すことができます。MySQLからテーブルを返すには、関数ではなくストアドプロシージャを使用します。 まずテーブルを作成しましょう- mysql> create table DemoTable696 (    Id int,    Name varchar(100) ); Query OK, 0 rows affected (0.77 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into De

  2. MySQLのSLEEP()関数はビジーウェイトですか?それを実装する方法は?

    いいえ、MySQLスリープ機能はビジーウェイトではありません。最初にテーブルを作成し、SLEEP()関数を実装しましょう- mysql> create table DemoTable(FirstName varchar(100)); Query OK, 0 rows affected (0.57 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('John'); Query OK, 1 row affected (0.15 sec) mysql> insert