Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menghindari pengkodean karakter saat menggunakan FOR XML PATH?

Anda hanya perlu menggunakan opsi yang tepat dengan FOR XML . Inilah satu pendekatan yang menghindari penyandian:

USE tempdb;
GO

CREATE TABLE dbo.x(y nvarchar(255));

INSERT dbo.x SELECT 'Sports & Recreation'
   UNION ALL SELECT 'x >= y'
   UNION ALL SELECT 'blat'
   UNION ALL SELECT '<hooah>';

-- BAD:
SELECT STUFF((SELECT N',' + y
  FROM dbo.x 
  FOR XML PATH(N'')),1, 1, N'');

-- GOOD:
SELECT STUFF((SELECT N',' + y
  FROM dbo.x 
  FOR XML PATH, TYPE).value(N'.[1]', N'nvarchar(max)'),1, 1, N'');

GO
DROP TABLE dbo.x;

Jika Anda menggunakan SQL Server versi terbaru (2017+), Anda dapat menggunakan STRING_AGG() dan tidak khawatir tentang XML sama sekali:

SELECT STRING_AGG(y, N',') FROM dbo.x;

db<>biola mendemonstrasikan ketiganya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan Template di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 16

  2. Hasilkan hash kata sandi Keanggotaan ASP.Net dalam T-SQL murni

  3. Apakah kunci utama sudah ketinggalan zaman?

  4. Bidang SQL Server terpotong

  5. Cara Membuat Prosedur Tersimpan di SQL Server