どの条件で、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または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) 挿入コマンド-を使用して、テー
-
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