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

SELECTステートメントを使用してMySQLでnull値を置き換える方法の違いは何ですか?


selectステートメントを使用してNULL値を置き換えるために使用できるオプションはたくさんあります。 CASEステートメントまたはIFNULL()またはCOALESCE()

を使用できます

ケース1 − IFNULL()

の使用

IFNULL()の構文は次のとおりです-

SELECT IFNULL(yourColumnName,’yourValue’) AS anyVariableName from yourTableName;

ケース2 − COALESCE()

の使用

COALESCE()の構文は次のとおりです-

SELECT COALESCE(yourColumnName,’yourValue’) AS anyVariableName from yourTableName;

ケース3 −CASEステートメントの使用

CASEステートメントの構文。

SELECT CASE
WHEN yourColumnName IS NULL THEN ‘yourValue’
ELSE yourColumnName END AS anyVariableName FROM yourTableName

上記で説明したことを理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> create table ReplaceNULLDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(10),
   -> Marks int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.62 sec)
挿入コマンドを使用してテーブルにいくつかのレコードを挿入します。クエリは次のとおりです-

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Larry',90);
Query OK, 1 row affected (0.16 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Carol',NULL);
Query OK, 1 row affected (0.17 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('David',NULL);
Query OK, 1 row affected (0.14 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Bob',67);
Query OK, 1 row affected (0.17 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Sam',78);
Query OK, 1 row affected (0.19 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Mike',NULL);
Query OK, 1 row affected (0.19 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('John',98);
Query OK, 1 row affected (0.16 sec)
selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from ReplaceNULLDemo;

以下は出力です-

+----+-------+-------+
| Id | Name  | Marks |
+----+-------+-------+
|  1 | Larry |    90 |
|  2 | Carol |  NULL |
|  3 | David |  NULL |
|  4 | Bob   |    67 |
|  5 | Sam   |    78 |
|  6 | Mike  |  NULL |
|  7 | John  |    98 |
+----+-------+-------+
7 rows in set (0.00 sec)

NULL値を0に変換してみましょう。

ケース1 − IFNULL()

の使用

クエリは次のとおりです-

mysql> select ifnull(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;

以下は、NULLが0に置き換えられて表示される出力です-

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
|                     90 |
|                      0 |
|                      0 |
|                     67 |
|                     78 |
|                      0 |
|                     98 |
+------------------------+
7 rows in set (0.00 sec)

ケース2 − COALESCE()

の使用

クエリは次のとおりです-

mysql> select coalesce(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;

以下は、NULLが0に置き換えられて表示される出力です-

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
|                     90 |
|                      0 |
|                      0 |
|                     67 |
|                     78 |
|                      0 |
|                     98 |
+------------------------+
7 rows in set (0.00 sec)

ケース3 −CASEステートメントを使用します。

クエリは次のとおりです-

mysql> select case
   -> when Marks is null then 0
   -> else Marks end as ReplacementOfNULLWith0
   -> from ReplaceNULLDemo;

以下は、NULLが0に置き換えられて表示される出力です-

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
|                     90 |
|                      0 |
|                      0 |
|                     67 |
|                     78 |
|                      0 |
|                     98 |
+------------------------+
7 rows in set (0.00 sec)

  1. 同じMySQLSELECTステートメント内でエイリアスの値を使用する

    SELECTでエイリアスを直接使用することはできません。代わりに、ユーザー定義変数を使用してください。構文は次のとおりです。ここで、@yourAliasNameは変数とエイリアスです- select @yourAliasName :=curdate() as anyAliasName,concat(‘yourValue.',yourColumnName,' yourValue',@yourAliasName) as anyAliasName from yourTableName; まずテーブルを作成しましょう- mysql> create table

  2. MySQLでは、!=NULLとISNOT NULLの違いは何ですか?

    値を!=NULLと比較すると、NULLが返されます。したがって、!=NULLは無意味です。 !=NULLとISNOT NULLの違いを確認するために、最初にテーブルを作成しましょう。 まずテーブルを作成しましょう- mysql> create table DemoTable1970    (    Value int    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTa