select return (0 row 0 total rows) null 결과 출력처리방법

2021. 4. 6. 02:02 Database/mysql tip

쿼리에서 조건을 걸어 데이터가 return 0 row일때

쿼리에서 "값이 없다" 라는 결과를 리턴값으로 처리하는 방법을 사용해보려한다.

 

1. 테이블 생성하기

CREATE TABLE `CODE_TABLE` (
    `CODE_CD` VARCHAR(10) NOT NULL COLLATE 'utf8_bin',
    `CODE_NM` VARCHAR(10) NOT NULL COLLATE 'utf8_bin'
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB;

 

코드테이블이라는 테스트 테이블을 생성한다.

코드테이블은 코드, 코드명 컬럼으로 구성된다.

 

2. 데이터 넣기

INSERT INTO CODE_TABLE VALUES('10','개발팀');
 
INSERT INTO CODE_TABLE VALUES('20','영업팀');
 
INSERT INTO CODE_TABLE VALUES('30','기획팀');

 

기초데이터를 넣어준다.

 

 

3. 없는 데이터 조회하기

-- SELECT한 Row가 0이므로 IFNULL 처리 불가        
SELECT IFNULL(A.CODE_NM, '없는 코드') AS CODE_NM
  FROM CODE_TABLE A
 WHERE A.CODE_CD = '100';

 

현재 CODE_CD컬럼의 데이터는 10,20,30 이 들어가 있고

where절에서 '100' 을 조회하면 데이터가 조회되지 않는다.

 

위와 같이 쿼리를 작성하면 데이터가 있다면 코드명이 나오고

데이터가 없다면 아무것도 나오지 않는다.

 

SELECT 한 결과가 0건이라도

IFNULL에 걸린 것 처럼 "없는 코드" 라고 결과가 나오게 하고 싶다.

 

 

4. DUAL 테이블과 외부조인 걸기

SELECT IFNULL(A.CODE_NM, '없는 코드') AS CODE_NM
  FROM CODE_TABLE A 
RIGHT OUTER JOIN (SELECT '') AS m_dual
         ON A.CODE_CD = '100';

 

 

DUAL을 외부조인으로 사용하여 CODE가 없다면 "없는코드", 있다면 코드명이 나온다.

 

5. 집계함수 사용하기

SELECT IFNULL(MAX(A.CODE_NM), '없는 코드') AS CODE_NM
  FROM CODE_TABLE A 
 WHERE A.CODE_CD = '100';

 

 

집계함수를 사용하여 CODE가 없다면 "없는코드", 있다면 코드명이 나온다.

 

프로시저나 함수를 작성할때 

결과값이 없더라도 MESSAGE로 출력하고 싶다면 유용하게 쓰일수 있을 것 같다.

 

출처 : shlee0882.tistory.com/244?category=749851