통계, IT, AI

조회 결과가 없을 때 쿼리로 디폴트값을 반환하기 본문

IT/SQL

조회 결과가 없을 때 쿼리로 디폴트값을 반환하기

Harold_Finch 2019. 10. 16. 22:53

DB에서 조회결과가 없을 때, 빈 리스트가 아닌 디폴트값이 나오도록 하고 싶을 때가 있다.
물론 코딩으로 구현할 수도 있지만, 경우에 따라서는 쿼리만 사용하는 것이 더 간단하기도 하다.
다음과 같이 쿼리를 작성하면 조회 결과가 있을 때는 해당 결과를, 없을 때는 디폴트값으로 '%'를 한 줄 반환한다.
단, mariadb 기준이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  with tb_tmp as (
select 'reason_code' as cd, '0001' as val
 union all
select 'reason_code' as cd, '0002' as val
)
 
select t1.val
  from tb_tmp t1
 where 1=1
   and t1.cd = 'reason_code'
 
 union
 
select nvl(t1.val, '%')
  from (select null) t1  -- ORACLE: (select null) -> DUAL
  left outer join tb_tmp t1
    on t1.cd = 'reason_code'

'IT > SQL' 카테고리의 다른 글

오라클에서의 정규식 활용  (0) 2016.01.11
Comments