아래와 같이 하면 값이 없는 애는 NULL로 표기된채로 ,로 여러개 쭈르르르륵 나온다.

NULL을 해주는 이유는 NULL일 경우 값을 아예 생략해서 몇개의 값을 합친건지 알수가 없기 때문.

어떻게 보면.. DB를 DB답게 안쓰는 방법인데

여러개의 레코드를 합치다 보면 NULL의 위치가 서로 다를테니 형식을 맞추기 위함이라고 해야하려나?

 

string_agg(COALESCE(합칠변수::text,'NULL'), ',')

---

 

ms sql server 에서는 isnull로 값없는건 빠지지 않도록 해주어야 한다고..

[링크 : https://docs.microsoft.com/ko-kr/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017]

[링크 : https://xshine.tistory.com/205]

[링크 : https://dbrang.tistory.com/1289]

 

COALESCE() 라는 함수를 지원한다고.

[링크 : http://www.postgresqltutorial.com/postgresql-isnull/]

 

The COALESCE function returns the first of its arguments that is not null. Null is returned only if all arguments are null. It is often used to substitute a default value for null values when data is retrieved for display, for example:

This returns description if it is not null, otherwise short_description if it is not null, otherwise (none).

Like a CASE expression, COALESCE only evaluates the arguments that are needed to determine the result; that is, arguments to the right of the first non-null argument are not evaluated. This SQL-standard function provides capabilities similar to NVL and IFNULL, which are used in some other database systems.

[링크 : https://www.postgresql.org/docs/9.5/functions-conditional.html]

 

[링크 : https://stackoverflow.com/.../how-to-concatenate-strings-of-a-string-field-in-a-postgresql-group-by-query]

[링크 : https://blog.gaerae.com/2015/09/postgresql-multiple-rows-and-json-or-string.html]

 

2019/09/08 - [프로그램 사용/postgreSQL] - sql 여러행을 하나로 합치기 concat

 

+

json_agg(expr) 은 delimiter 없이 JSON ARRAY 타입으로 리턴해준다.

json_agg는 string_agg와는 다르게 null을 기본으로 출력해준다.

 

+

DISTINCT를 string_arr 안에서 사용이 가능하다.

[링크 : https://yahwang.github.io/posts/46]

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

postgresql transaction begin / commit / rollback  (0) 2019.09.24
sql 문 계산하기  (0) 2019.09.24
join where와 on  (0) 2019.09.18
복수 컬럼에 대한 inner join  (0) 2019.09.18
postgresql update  (0) 2019.09.18
Posted by 구차니