Se hai mai utilizzato Database Mail di SQL Server per inviare via e-mail i risultati di una query, potresti aver notato che i risultati sono separati da uno spazio per impostazione predefinita.
Questo va bene se vuoi un set di risultati separato da spazi, ma cosa succede se vuoi che sia separato da virgole?
Fortunatamente puoi usare il @query_result_separator
argomento per fare proprio questo. Puoi utilizzare questo argomento per specificare qualsiasi separatore (purché sia un char(1) ).
Esempio
Ecco un esempio per dimostrare come cambiare il separatore in una virgola:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@query_result_separator = ',',
@query_result_no_padding = 1,
@subject = 'Query results as discussed';
Risultato:
Potential candidates for an Admin job, perhaps? ArtistId,ArtistName,ActiveFrom --------,----------,---------- 1,Iron Maiden,1975-12-25 2,AC/DC,1973-01-11 3,Allan Holdsworth,1969-01-01 4,Buddy Rich,1919-01-01 5,Devin Townsend,1993-01-01 (5 rows affected)
Nota che sto usando anche il @query_result_no_padding
argomento per rimuovere qualsiasi riempimento che potrebbe essere applicato ai risultati.
Puoi anche usare @attach_query_result_as_file = 1
per allegare i risultati in un file separato, se necessario.
Un esempio usando il separatore di spazio predefinito
Se rimuovo il @query_result_separator = ','
a parte l'esempio sopra, i miei risultati sono separati dal carattere spazio predefinito.
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@query_result_no_padding = 1,
@subject = 'Query results as discussed';
Risultato:
Potential candidates for an Admin job, perhaps? ArtistId ArtistName ActiveFrom -------- ---------- ---------- 1 Iron Maiden 1975-12-25 2 AC/DC 1973-01-11 3 Allan Holdsworth 1969-01-01 4 Buddy Rich 1919-01-01 5 Devin Townsend 1993-01-01 (5 rows affected)