Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mô phỏng hàm MySQL group_concat trong Microsoft SQL Server 2005?

Không có cách thực sự dễ dàng để làm điều này. Tuy nhiên, có rất nhiều ý tưởng.

Tốt nhất tôi đã tìm thấy:

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;

Hoặc một phiên bản hoạt động chính xác nếu dữ liệu có thể chứa các ký tự như <

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Một trình kích hoạt để hoạt động trên nhiều lần chèn hàng

  2. Khung thực thể tải rất chậm lần đầu tiên sau mỗi lần biên dịch

  3. Ngăn chặn việc lưu các thay đổi yêu cầu tạo lại bảng có ảnh hưởng tiêu cực

  4. Cách đổi tên tên cột hoặc tên bảng trong SQL Server - Hướng dẫn SQL Server / T-SQL Phần 36

  5. Ràng buộc Kiểm tra có thể liên quan đến một bảng khác không?