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

どの条件で、MySQL CASEステートメントはNULLを返しますか?


比較または条件が真でない場合、CASEステートメントは結果を返します。 ELSEの後に指定 声明。しかし、 ELSEがない場合はどうなりますか ステートメントの場合、この状況では、CASEステートメントはNULLを返します。以下はそれを実証するための例です。

mysql> Select CASE 100
    -> WHEN 150 THEN 'It is matched'
    -> WHEN 200 THEN 'It is not matched'
    -> END As 'It Returns NULL';
+-----------------+
| It Returns NULL |
+-----------------+
| NULL            |
+-----------------+
1 row in set (0.00 sec)

テーブル「Students」のデータを使用した以下のクエリでは、ウィスコンシン州に属する学生がいないため、NULLが返されます。

mysql> Select SUM(CASE WHEN country = 'USA' THEN 1 ELSE 0 END) AS USA,
    -> SUM(CASE WHEN country = 'UK' THEN 1 ELSE 0 END) AS UK,
    -> SUM(CASE WHEN country = 'INDIA' THEN 1 ELSE 0 END) AS INDIA,
    -> SUM(CASE WHEN country = 'Russia' THEN 1 ELSE 0 END) AS Russia,
    -> SUM(CASE WHEN country = 'France' THEN 1 ELSE 0 END) AS France,
    -> SUM(CASE WHEN country = 'NZ' THEN 1 ELSE 0 END) AS NZ,
    -> SUM(CASE WHEN country = 'Australia' THEN 1 ELSE 0 END) AS Australia,
    -> SUM(CASE WHEN country = 'WI' THEN 1 END) AS WI
    -> From Students;
+------+------+-------+--------+--------+------+-----------+------+
| USA  | UK   | INDIA | Russia | France | NZ   | Australia | WI   |
+------+------+-------+--------+--------+------+-----------+------+
| 2    | 1    | 2     | 1      | 1      | 1    | 1         | NULL |
+------+------+-------+--------+--------+------+-----------+------+
1 row in set (0.00 sec)

  1. <>1またはISNULLレコードを返すMySQLTINYINTタイプ

    最初にテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY ,    -> EmployeeName varchar(20),    -> isMarried tinyint    -> ); Query OK, 0 rows affected (0.83 sec) 挿入コマンド-を使用して、テー

  2. MySQLでCASEWHENステートメントを使用してカウントを実行しますか?

    このために、CASEWHENステートメントを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1910    (    FirstName varchar(20),    Marks int    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1910 values('Chris