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

Truy vấn SQL - Nối kết quả thành một chuỗi

Nếu bạn đang sử dụng SQL Server 2005 trở lên, bạn có thể sử dụng FOR XML PATH & STUFF này lừa:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STUFF( (SELECT ',' + CodeName 
                             FROM dbo.AccountCodes 
                             ORDER BY Sort
                             FOR XML PATH('')), 
                            1, 1, '')

FOR XML PATH('') về cơ bản nối các chuỗi của bạn với nhau thành một kết quả XML dài (chẳng hạn như ,code1,code2,code3 v.v.) và STUFF đặt một ký tự "không có gì" ở ký tự đầu tiên, ví dụ:xóa sạch dấu phẩy đầu tiên "thừa" để cung cấp cho bạn kết quả có thể bạn đang tìm kiếm.

CẬP NHẬT: OK - tôi hiểu các nhận xét - nếu văn bản của bạn trong bảng cơ sở dữ liệu đã chứa các ký tự như < , > hoặc & , thì giải pháp hiện tại của tôi trên thực tế sẽ mã hóa chúng thành &lt; , &gt;&amp; .

Nếu bạn gặp sự cố với mã hóa XML đó - thì có, bạn phải xem giải pháp do @KM đề xuất, giải pháp này cũng hoạt động cho các ký tự đó. Một từ cảnh báo từ tôi:cách tiếp cận này còn nhiều hơn nữa tài nguyên và xử lý chuyên sâu - chỉ để bạn biết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PARSE () so với CAST () so với CONVERT () trong SQL Server:Sự khác biệt là gì?

  2. Cách kết nối với cơ sở dữ liệu máy chủ SQL từ ứng dụng Windows 10 UWP

  3. SQL Server Internals:Các toán tử có vấn đề Pt. II - Băm

  4. SQL Server 2005 và phạm vi bảng tạm thời

  5. Cách tạo bảng với cột nhận dạng