Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Alterar o separador para uma vírgula ao enviar por email os resultados da consulta no SQL Server (T-SQL)


Se você já usou o Database Mail do SQL Server para enviar por e-mail os resultados de uma consulta, deve ter notado que os resultados são separados por um espaço por padrão.

Isso é bom se você quiser um conjunto de resultados separado por espaço, mas e se você quiser que ele seja separado por vírgula?

Felizmente você pode usar o @query_result_separator argumento para fazer exatamente isso. Você pode usar este argumento para especificar qualquer separador (desde que seja um char(1) ).

Exemplo


Aqui está um exemplo para demonstrar como alterar o separador para uma vírgula:
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'; 

Resultado:
Potenciais candidatos a um cargo de administrador, talvez?ArtistId,ArtistName,ActiveFrom-----------,----------,----------1,Iron Maiden,1975-12-252,AC/DC,1973-01-113,Allan Holdsworth,1969-01-014,Buddy Rich,1919-01-015,Devin Townsend,1993-01-01(5 linhas afetadas) 
Observe que também estou usando o @query_result_no_padding argumento para remover qualquer preenchimento que possa ser aplicado aos resultados.

Você também pode usar @attach_query_result_as_file = 1 para anexar os resultados em um arquivo separado, se necessário.

Um exemplo usando o separador de espaço padrão


Se eu remover o @query_result_separator = ',' parte do exemplo acima, meus resultados são separados pelo caractere de espaço padrão.
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'; 

Resultado:
Potenciais candidatos a um cargo de administrador, talvez?ArtistId ArtistName ActiveFrom-------- ---------- ----------1 Iron Maiden 1975-12- 252 AC/DC 1973-01-113 Allan Holdsworth 1969-01-014 Buddy Rich 1919-01-015 Devin Townsend 1993-01-01(5 linhas afetadas)