'{"1001": "20", "1002": "30", "1003": "50"}'
이 select 문을 사용하여 열로 바꾼 json 문자열 이 있습니다.
SELECT json_each_text (vdn_weight) as weightage
FROM aa_dev.sdg_metadata;
이제 쉼표로 구분 된 값이 다음과 같이되도록 2D 배열로 변환하고 싶습니다.
arr[1][1] = 1001
arr[1][2] = 1002
arr[1][3] = 1004
arr[2][1] = 20
arr[2][2] = 30
arr[2][3] = 50
위의 select 문을 업데이트하고 둥근 중괄호를 제거하는 쿼리를 작성하려고했습니다.
With CTE
AS
(SELECT json_each_text (vdn_weight) as weightage
FROM data )
UPDATE CTE
set CTE.weightage = regexp_replace(CTE.weightage, '[\(\) "]', '', 'g');
하지만이 쿼리는 나에게 오류를 주었다
SQL Error [42P01]: ERROR: relation "cte" does not exist
Position: 105
2D 어레이와 별도로 더 나은 솔루션 또는 더 나은 데이터 구조는 무엇입니까? 임시 테이블이나 테이블을 사용할 수 없습니다.
UPDATE
CTE가 될 수없고 실제 테이블 만 있습니다.
SELECT
array_agg( -- 3
array[key, value] -- 2
)
FROM json_each_text('{"1001": "20", "1002": "30", "1003": "50"}') -- 1
json_each_text()
FROM 목록에서 사용 하면 튜플 대신 두 개의 열 ( key
및 value
)이 생성됩니다.먼저 모든 키를 하나의 배열에 넣고 모든 값을 하나의 배열에 넣고 나중에 이러한 배열을 집계하려면 (차원 전환) 물론 작업을 전환해야합니다.
SELECT
array[
array_agg(key),
array_agg(value)
]
FROM json_each_text('{"1001": "20", "1002": "30", "1003": "50"}')
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다