>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 쉼표로 구분된 문자열을 효율적으로 중첩 해제하는 방법은 무엇입니까?

PostgreSQL에서 쉼표로 구분된 문자열을 효율적으로 중첩 해제하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-23 04:28:10712검색

How to Efficiently Unnest Comma-Separated Strings in PostgreSQL?

PostgreSQL 14 이상

쉼표로 구분된 문자열의 경우 string_to_table() 대신 unnest(string_to_array()) 함수를 사용하세요.

<code class="language-sql">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;</code>

PostgreSQL 9.4 이상

컬렉션을 반환하는 함수에 WITH ORDINALITY를 추가합니다.

<code class="language-sql">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;</code>

PostgreSQL 8.4 - 9.3 버전

row_number() OVER (PARTITION BY id)(ORDER BY 제외)를 사용하여 일련번호를 가져옵니다.

<code class="language-sql">SELECT *, row_number() OVER (PARTITION by id) AS nr
FROM (SELECT id, regexp_split_to_table(elements, ',') AS elem FROM tbl) t;</code>

PostgreSQL 8.1 - 8.4 버전

일련번호가 있는 요소를 분할하기 위한

맞춤 기능 구현 f_unnest_ord():

<code class="language-sql">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';</code>

위 내용은 PostgreSQL에서 쉼표로 구분된 문자열을 효율적으로 중첩 해제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.