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

SQL Server mengurutkan string yang dipisahkan koma dalam satu kolom

Sebagai catatan tambahan:apa yang diposting TheGameiswar akan bekerja dengan sangat baik jika @string tidak mengandung karakter XML khusus apa pun. Jika ya, Anda perlu melakukan sedikit penyesuaian. Ini:

for xml path('')),1,1,'')

Akan perlu menjadi ini:

for xml path(''),TYPE).value('.', 'varchar(1000)'),1,1,'');

Pertimbangkan pertanyaan berikut bersama dengan komentar saya:

declare @string varchar(max)
set @string='<tag3>,<tag1>,<tag2>';

-- Note the output here:
;with cte
as
(
select *
from dbo.delimitedSplit8K(@string,',')
)
select stuff( (select ',' +item 
from cte
order by item
for xml path('')),1,1,'');

-- this will handle special XML characters:
WITH cte
as
(
select *
from dbo.delimitedSplit8K(@string,',')
)
select stuff( (select ',' +item 
from cte
order by item
for xml path(''),TYPE).value('.', 'varchar(1000)'),1,1,'');

Perubahan yang saya tunjukkan akan sedikit mengurangi kinerja tetapi menangani karakter XML khusus dengan benar.

Sunting:Saya lupa menyebutkan- "splitter" yang saya gunakan berasal dari Artikel ini:http://www.sqlservercentral.com/articles/Tally+Table/72993/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih hanya baris pertama untuk setiap nilai unik kolom?

  2. Melewati baris saat mengimpor Excel ke SQL menggunakan SSIS 2008

  3. SQL Server, XLOCK &optimasi yang menyesatkan

  4. Bagaimana cara membuat pengguna di SQL-Server yang hanya memiliki akses ke satu tabel, dan hanya dapat menyisipkan baris?

  5. Cara Menginstal sqlcmd &bcp di Ubuntu