database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10207 게시물 읽기
No. 10207
컬럼 가공 시 NULL 처리
작성자
궁금
작성일
2020-11-06 17:04ⓒ
2020-11-06 17:05ⓜ
조회수
1,420

 

 

안녕하세요!

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)

 

이 글에 대한 댓글이 총 2건 있습니다.

 case when 으로 풀어도 성능이 떨어지나요?

김상기(ioseph)님이 2020-11-06 17:41에 작성한 댓글입니다.

case when 으로 변경했더니 잘 처리되고 성능도 빠르네요~! 

늘 도움 감사드립니다^^

궁금님이 2020-11-11 13:15에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
10210UPDATE 분산처리 방법 [1]
TEST
2020-11-11
1774
10209dblink 관련 문의 드립니다. [2]
이종현
2020-11-11
1555
10208쿼리 질문... [3]
신입
2020-11-10
1480
10207컬럼 가공 시 NULL 처리 [2]
궁금
2020-11-06
1420
10206Windows10에서 설치 후 실행 시 에러 [1]
전상도
2020-11-04
1421
10205번역 자잘한 오타... [3]
전상도
2020-10-30
1411
10204postgresql 테이블 조인 결과 쿼리를 만드려고 합니다.(가로나열) [1]
디비디비딥
2020-10-28
1428
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다