안녕하세요!
postgresql에서 || 를 사용해 가공된 컬럼값을 조회하고 있는데
가공컬럼에 NULL값이 있으면 결과가 NULL로 출력됩니다.
========================================================
ex)
# select * from test1;
a | b | c
---+---+--------
1 | a | 사과
2 | b | 바나나
3 | c | 고양이
4 | | 수박
5 | e |
# select a, b||c as bc from test1;
---+---------
1 | a사과
2 | b바나나
3 | c고양이
4 |
5 |
========================================================
단순한건 coalesce()처리로 가능하지만.. 아래처럼
컬럼 앞뒤로 특정문자 '[ ]' 를 붙여야 하는 경우 null 인 값엔 제외하고 싶습니다.
orafce extension설치로 decode로 변환이 가능하긴한데 대량의 데이터일 땐 성능 차이가 큽니다.
null값 포함 컬럼을 한번에 가공처리할 수 있는 다른 방법이 있을까요...?
# select a, coalesce(b,'')||coalesce(c,'') as bc from test1;
---+---------
1 | a사과
2 | b바나나
3 | c고양이
4 | 수박
5 | e
# select a, '['||coalesce(b,'')||']'||coalesce(c,'') as bc from test1;
---+-----------
1 | [a]사과
2 | [b]바나나
3 | [c]고양이
4 | []수박
5 | [e]
select a, decode(b, null, '', '['||b||']')||decode(c,null,'',c)::text from test1;
---+-----------
1 | [a]사과
2 | [b]바나나
3 | [c]고양이
4 | 수박
5 | [e]
(5 rows)
|