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

Bagaimana Stuff dan 'For Xml Path' bekerja di SQL Server?

Begini cara kerjanya:

1. Dapatkan string elemen XML dengan FOR XML

Menambahkan FOR XML PATH ke akhir kueri memungkinkan Anda untuk menampilkan hasil kueri sebagai elemen XML, dengan nama elemen yang terkandung dalam argumen PATH. Misalnya, jika kita menjalankan pernyataan berikut:

SELECT ',' + name 
              FROM temp1
              FOR XML PATH ('')

Dengan meneruskan string kosong (UNTUK XML PATH('')), kita mendapatkan yang berikut sebagai gantinya:

,aaa,bbb,ccc,ddd,eee

2. Hapus koma di depan dengan STUFF

Pernyataan STUFF secara harfiah "mengisi" satu string ke string lain, menggantikan karakter dalam string pertama. Namun, kami menggunakannya hanya untuk menghapus karakter pertama dari daftar nilai yang dihasilkan.

SELECT abc = STUFF((
            SELECT ',' + NAME
            FROM temp1
            FOR XML PATH('')
            ), 1, 1, '')
FROM temp1

Parameter STUFF adalah:

  • String yang akan "diisi" (dalam kasus kami daftar lengkap nama dengan koma di depan)
  • Lokasi untuk mulai menghapus dan menyisipkan karakter (1, kita memasukkan string kosong)
  • Jumlah karakter yang akan dihapus (1, koma di depan)

Jadi kita berakhir dengan:

aaa,bbb,ccc,ddd,eee

3. Bergabunglah di id untuk mendapatkan daftar lengkap

Selanjutnya kita gabung saja ini pada daftar id di tabel temp, untuk mendapatkan daftar ID dengan nama:

SELECT ID,  abc = STUFF(
             (SELECT ',' + name 
              FROM temp1 t1
              WHERE t1.id = t2.id
              FOR XML PATH (''))
             , 1, 1, '') from temp1 t2
group by id;

Dan kami mendapatkan hasil kami:

Id Nama 1aaa, bbb, ccc, ddd, eee

Semoga membantu!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah kode ini mencegah injeksi SQL?

  2. Permintaan sql untuk tabel pohon

  3. Cara Memperbaiki "Pernyataan ALTER TABLE SWITCH gagal"

  4. Instal Azure Data Studio di Ubuntu 18.04

  5. Cegah menyimpan perubahan yang mengharuskan tabel dibuat ulang efek negatif