Heim > Datenbank > MySQL-Tutorial > Wie erhalte ich Elementnummern mit der Funktion unnest() von PostgreSQL?

Wie erhalte ich Elementnummern mit der Funktion unnest() von PostgreSQL?

Mary-Kate Olsen
Freigeben: 2025-01-23 04:19:11
Original
603 Leute haben es durchsucht

How to Get Element Numbers with PostgreSQL's unnest() Function?

Verwenden Sie die Funktion unnest() von PostgreSQL, um die Elementnummer abzurufen

Die Funktion unnest() ist nützlich, wenn Sie mit Spalten arbeiten, die durch Trennzeichen getrennte Werte enthalten. Es kann jedoch eine Herausforderung sein, den Elementwert und seine Anzahl gleichzeitig zu ermitteln.

PostgreSQL 14 oder höher

Für durch Kommas getrennte Zeichenfolgen bietet die Verwendung der Funktion string_to_table() eine einfache Lösung:

<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>
Nach dem Login kopieren

PostgreSQL 9.4 oder höher

Wenn ORDINALITY in PostgreSQL 9.4 zu Funktionen hinzugefügt wurde, die Sammlungen zurückgeben, können Sie die folgende Abfrage verwenden:

<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>
Nach dem Login kopieren

PostgreSQL 8.4 - 9.3

Um die Reihenfolge der Elemente in einer Zeichenfolge sicherzustellen:

<code class="language-sql">SELECT id, arr[nr] AS elem, nr
FROM (
   SELECT *, generate_subscripts(arr, 1) AS nr
   FROM (SELECT id, string_to_array(elements, ' ') AS arr FROM tbl) t
   ) sub;</code>
Nach dem Login kopieren

PostgreSQL 8.1 - 8.4

Für PostgreSQL-Versionen vor 8.4 können Sie eine Funktion erstellen, um das gewünschte Ergebnis zu erzielen:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erhalte ich Elementnummern mit der Funktion unnest() von PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage