sql >> Database teknologi >  >> RDS >> Sqlserver

Simulerer group_concat MySQL-funktion i Microsoft SQL Server 2005?

Ingen RIGTIG nem måde at gøre dette på. Der er dog mange ideer derude.

Bedste jeg har fundet:

SELECT table_name, LEFT(column_names , LEN(column_names )-1) AS column_names FROM information_schema.columns AS extern CROSS APPLY ( SELECT column_name + ',' FROM information_schema.columns AS intern WHERE extern.table_name = intern.table_name FOR XML PATH('') ) pre_trimmed (column_names) GROUP BY table_name, column_names;

Eller en version, der fungerer korrekt, hvis dataene kan indeholde tegn såsom <

WITH extern AS (SELECT DISTINCT table_name FROM INFORMATION_SCHEMA.COLUMNS) SELECT table_name, LEFT(y.column_names, LEN(y.column_names) - 1) AS column_names FROM extern CROSS APPLY (SELECT column_name + ',' FROM INFORMATION_SCHEMA.COLUMNS AS intern WHERE extern.table_name = intern.table_name FOR XML PATH(''), TYPE) x (column_names) CROSS APPLY (SELECT x.column_names.value('.', 'NVARCHAR(MAX)')) y(column_names)

  1. SQL - Hvordan transponeres?

  2. PostgreSQL:FOREIGN KEY/ON SLET CASCADE

  3. Er det muligt at køre flere DDL-sætninger i en transaktion (inden for SQL Server)?

  4. regexp_substr springer over tomme positioner