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>
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>
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>
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>
Ohne Bestellung:
<code class="language-sql">SELECT FieldA, GROUP_CONCAT(FieldB, ',') AS FieldBs FROM TableName GROUP BY FieldA ORDER BY FieldA;</code>
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!