sourcecode

Postgre와 동치Oracle 9i의 SQL array() / array_to_string() 함수

codebag 2023. 10. 30. 20:56
반응형

Postgre와 동치Oracle 9i의 SQL array() / array_to_string() 함수

Oracle에서 여러 행을 반환하는 쿼리에서 쉼표로 구분된 값 목록이 있는 단일 행을 반환하여 반환된 행을 단일 행으로 평탄화하고자 합니다.

포스트그레에서SQL은 array 및 array_to_string 기능을 사용하여 다음과 같이 구현할 수 있습니다.

"사람"이라는 표가 주어졌을 때:

id | name
---------
1  | bob
2  | alice
3  | jon

SQL:

select array_to_string(array(select name from people), ',') as names;

반환 예정:

names
-------------
bob,alice,jon

Oracle 9i에서 동일한 결과를 얻으려면 어떻게 해야 합니까?

감사해요.

매트

팀 홀은 오라클에서 스트링 집합 기법을 결정적으로 수집하고 있습니다.

만약 당신이 9i에 갇혀 있다면, 나의 개인적인 선호는 당신이 할 수 있는 사용자 정의 집합(그 페이지에 string_agg 구현이 있음)을 정의하는 것입니다.

SELECT string_agg( name )
  FROM people

그러나 STRING_AGG 함수를 새로 정의해야 합니다.새로운 객체를 생성하는 것을 피해야 하는 경우 다른 접근 방식이 있지만 9i에서는 Postgre보다 더 엉망이 될 것입니다.SQL 구문.

10g에서는 Tim의 기사 말미에 언급된 COLLECT 옵션을 확실히 선호합니다.

이 접근 방식의 좋은 점은 집합을 인수로 받아들이는 동일한 기본 함수를 집합 함수와 다중 집합 함수로 모두 사용할 수 있다는 것입니다.

SELECT deptno, tab_to_string(CAST(MULTISET(SELECT ename FROM emp 
WHERE deptno = dept.deptno) AS t_varchar2_tab), ',') FROM dept

하지만 9i에서는 사용할 수 없습니다.SYS_CONNECT_BY_PATH는 유연해서 좋지만 느릴 수 있으니 주의하세요.

언급URL : https://stackoverflow.com/questions/4326868/equivalent-to-postgresql-array-array-to-string-functions-in-oracle-9i

반응형