[SQL] 포스트 그레스 어레이에 데이터를 선택
SQL포스트 그레스 어레이에 데이터를 선택
나는 다음과 같은 데이터를 가지고 :
name id url
John 1 someurl.com
Matt 2 cool.com
Sam 3 stackoverflow.com
어떻게 즉 다차원 배열에이 데이터를 선택하는 포스트 그레스의 SQL 문을 작성할 수 있습니다 :
{{John, 1, someurl.com}, {Matt, 2, cool.com}, {Sam, 3, stackoverflow.com}}
나는 포스트 그레스에서 전에 배열의 사용법의이 종류를 볼 수 있지만 방법이 배열 형식으로 테이블에서 데이터를 선택하는 아무 생각했습니다.
모든 열 유형의 텍스트의 것을 여기에 가정.
해결법
-
==============================
1.당신은 적어도하지 최대 PostgreSQL의 9.4 다차원 배열을 생산하기 위해) (array_agg 사용할 수 없습니다. (그러나 곧 포스트 그레스 9.5 배를 array_agg의 새로운 변종 ()이 있습니다!)
당신은 적어도하지 최대 PostgreSQL의 9.4 다차원 배열을 생산하기 위해) (array_agg 사용할 수 없습니다. (그러나 곧 포스트 그레스 9.5 배를 array_agg의 새로운 변종 ()이 있습니다!)
당신이 @ 매트 볼의 쿼리의 나가하는 기록의 배열입니다 (the_table []).
배열은 동일한 기본 유형의 요소를 보유 할 수있다. 당신은 분명히 숫자 및 문자열 유형이있다. 그것이 작동되도록 텍스트에 모든 열을 (이미가 아닌)을 변환합니다.
내가 여기 전에 당신에게 보여처럼이에 대한 집계 함수를 만들 수 있습니다.
CREATE AGGREGATE array_agg_mult (anyarray) ( SFUNC = array_cat ,STYPE = anyarray ,INITCOND = '{}' );
요구:
SELECT array_agg_mult(ARRAY[ARRAY[name, id::text, url]]) AS tbl_mult_arr FROM tbl;
그것을 다차원 배열 (2 차원 정밀 함)하도록 추가 ARRAY [] 층을 참고.
인스턴트 데모 :
WITH tbl(id, txt) AS ( VALUES (1::int, 'foo'::text) ,(2, 'bar') ,(3, '}b",') -- txt has meta-characters ) , x AS ( SELECT array_agg_mult(ARRAY[ARRAY[id::text,txt]]) AS t FROM tbl ) SELECT *, t[1][3] AS arr_element_1_1, t[3][4] AS arr_element_3_2 FROM x;
-
==============================
2.당신은 집계 함수를 사용할 필요가; array_agg는 당신이 필요로해야한다.
당신은 집계 함수를 사용할 필요가; array_agg는 당신이 필요로해야한다.
SELECT array_agg(s) FROM (SELECT name, id, url FROM the_table ORDER BY id) AS s;
from https://stackoverflow.com/questions/11762398/selecting-data-into-a-postgres-array by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 포스트 그레스 대소 문자 구분 (0) | 2020.04.16 |
---|---|
[SQL] MySQL의 테이블에서 중복을 삭제하는 방법 (0) | 2020.04.16 |
[SQL] 합니까 MS 액세스 지원 "CASE"절 ODBC와 연결하면? (0) | 2020.04.16 |
[SQL] SSMS에서 빠른 쿼리 매우 코드에서 느리지 만 (0) | 2020.04.16 |
[SQL] 쿼리 MSSQL에 의해 그룹에서 조건부 합계 (0) | 2020.04.16 |