Se avete la necessita' di concatenare in una stringa dei campi che sono su piu' records, normalmente viene suggerito l'uso dei cursori che eseguono un ciclo sulle righe interessate dalla clausola "where".
Per fortuna esite un modo piu' veloce per ottenere la concatenazione desiderata senza l'uso di cursori, senza stressare la cpu del server e quella del programmatore!
Come test, ho usato il db d'esempio AdventureWorks e la tabella "Production.Product". Voglio quindi concatenare e separare con una virgola, tutti i prodotti il cui colore e' "Black".
Per per poter concaternare i prodotti, ho usato il seguente codice:
SELECT STUFF ((SELECT ', ' + [Name]
FROM Production.Product WHERE Color = 'Black'
FOR XML PATH ('')),1,2,'') AS Black_Products
Usando quindi,
FOR XML PATHma anche la funzione (serve per separare con le virgole al meglio)
STUFFpotrete risolvere velocemente e senza cursori, la vostra concatenazione!
Maggiori info sulla funzione STUFF le trovate qui, per quanto riguarda le istruzioni FOR XML PATH, potete guardare qui.
Buon lavoro!
0 Comments:
Post a Comment