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)

insert 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

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)