PostgreSQL에서 쉼표로 구분된 값을 중첩 해제하고 요소 순서를 유지하는 방법은 무엇입니까?
PostgreSQL의 요소 번호를 사용한 확장
질문:
unnest()
함수를 사용하여 쉼표로 구분된 값이 포함된 열을 확장하면 문자열의 원래 위치가 아닌 요소 자체만 반환됩니다.
타겟:
소스 문자열에서 요소와 해당 시퀀스 번호를 가져옵니다.
해결책:
PostgreSQL 14 이상
string_to_table()
함수와 WITH ORDINALITY
절 사용:
SELECT t.id, a.elem, a.nr FROM tbl t LEFT JOIN LATERAL string_to_table(t.elements, ',') WITH ORDINALITY AS a(elem, nr) ON true;
PostgreSQL 9.4 이상
WITH ORDINALITY
함수에 unnest()
절 추가:
SELECT t.id, a.elem, a.nr FROM tbl AS t LEFT JOIN LATERAL unnest(string_to_array(t.elements, ',')) WITH ORDINALITY AS a(elem, nr) ON true;
PostgreSQL 8.4 - 9.3
row_number()
함수에서 ORDER BY
절 생략:
SELECT *, row_number() OVER (PARTITION by id) AS nr FROM (SELECT id, regexp_split_to_table(elements, ',') AS elem FROM tbl) t;
PostgreSQL 8.1 - 8.4
요소와 해당 일련번호를 추출하는 사용자 정의 함수f_unnest_ord()
를 만듭니다.
CREATE FUNCTION f_unnest_ord(anyarray, OUT val anyelement, OUT ordinality integer) RETURNS SETOF record LANGUAGE sql IMMUTABLE AS 'SELECT [i], i - array_lower(,1) + 1 FROM generate_series(array_lower(,1), array_upper(,1)) i';
그런 다음 이를 사용하여 서수로 값을 확장합니다.
SELECT id, arr, (rec).* FROM (SELECT *, f_unnest_ord(arr) AS rec FROM (VALUES (1, '{a,b,c}'::text[])...) t) sub;
위 내용은 PostgreSQL에서 쉼표로 구분된 값을 중첩 해제하고 요소 순서를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)?
