Heim > Datenbank > MySQL-Tutorial > Wie implementieren verschiedene SQL-Datenbanken die String-Aggregation (LISTAGG)?

Wie implementieren verschiedene SQL-Datenbanken die String-Aggregation (LISTAGG)?

Susan Sarandon
Freigeben: 2025-01-22 13:06:10
Original
521 Leute haben es durchsucht

How Do Different SQL Databases Implement String Aggregation (LISTAGG)?

String-Aggregation in verschiedenen SQL-Datenbanken

In diesem Artikel wird gezeigt, wie Sie mithilfe verschiedener SQL-Datenbanken mehrere Zeichenfolgenwerte zu einer einzigen Zeichenfolge verketten. Das Ziel besteht darin, ein Zeichenfolgenfeld zusammenzufassen.

Oracle und DB2:

Sowohl Oracle als auch DB2 bieten die integrierte LISTAGG-Funktion. Die Syntax ist einfach:

<code class="language-sql">SELECT FieldA,
       LISTAGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
Nach dem Login kopieren

PostgreSQL:

PostgreSQL verwendet die STRING_AGG-Funktion:

<code class="language-sql">SELECT FieldA,
       STRING_AGG(FieldB, ',') AS FieldBs
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
Nach dem Login kopieren

SQL Server:

SQL Server 2017 und spätere Versionen unterstützen auch STRING_AGG. Für ältere Versionen (vor 2017) ist ein komplexerer Ansatz mit STUFF und FOR XML PATH erforderlich:

<code class="language-sql">WITH CTE_TableName AS (
    SELECT FieldA, FieldB
    FROM TableName
)
SELECT t0.FieldA,
       STUFF((
           SELECT ',' + t1.FieldB
           FROM CTE_TableName t1
           WHERE t1.FieldA = t0.FieldA
           ORDER BY t1.FieldB
           FOR XML PATH('')
       ), 1, LEN(','), '') AS FieldBs
FROM CTE_TableName t0
GROUP BY t0.FieldA
ORDER BY FieldA;</code>
Nach dem Login kopieren

SQLite:

Die GROUP_CONCAT-Funktion von SQLite kann eine String-Aggregation durchführen. Für die Bestellung ist ein CTE oder eine Unterabfrage erforderlich:

Bei Bestellung:

<code class="language-sql">WITH CTE_TableName AS (
    SELECT FieldA, FieldB
    FROM TableName
    ORDER BY FieldA, FieldB
)
SELECT FieldA,
       GROUP_CONCAT(FieldB, ',') AS FieldBs
FROM CTE_TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
Nach dem Login kopieren

Ohne Bestellung:

<code class="language-sql">SELECT FieldA,
       GROUP_CONCAT(FieldB, ',') AS FieldBs
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementieren verschiedene SQL-Datenbanken die String-Aggregation (LISTAGG)?. 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