Postgres에서 열을 여러 행으로 분할
다음과 같이 여러 값을 포함하는 열이 있는 테이블이 있다고 가정합니다.
subject | flag --------+----- this is a test | 2
원래 열의 각 값이 별도의 열이 되는 새 구조로 이 테이블을 변환해야 할 수도 있습니다.
token | flag --------+----- this | 2 is | 2 a | 2 test | 2
LATERAL 조인을 사용한 솔루션(Postgres 14)
Postgres 14 이상에서는 LATERAL 조인을 사용하여 이를 달성하는 효율적인 방법을 제공합니다. string_to_table() 함수. 이 함수는 제목 열을 토큰 배열로 분할합니다.
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
string_to_array()를 사용한 솔루션(Postgres 13-)
Postgres 13 이하의 경우 다음을 사용하세요. 대신 string_to_array() 함수 string_to_table():
SELECT unnest(string_to_array(subject, ' ')) AS token, flag FROM tbl WHERE flag = 2;
Regexp를 사용한 대체 솔루션
또 다른 옵션은 regexp_split_to_table() 함수를 사용하는 것입니다. 하지만 string_to_table()보다 덜 효율적입니다. 접근 방식:
SELECT s.token, t.flag FROM tbl t CROSS JOIN regexp_split_to_table(subject, ' ') AS s(token) WHERE t.flag = 2;
추가 참고 사항
위 내용은 PostgreSQL에서 열을 여러 행으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!