Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Remplacez le séparateur par une virgule lors de l'envoi par e-mail des résultats de la requête dans SQL Server (T-SQL)

Si vous avez déjà utilisé la messagerie de base de données de SQL Server pour envoyer les résultats d'une requête par e-mail, vous avez peut-être remarqué que les résultats sont séparés par un espace par défaut.

C'est bien si vous voulez un ensemble de résultats séparés par des espaces, mais que faire si vous voulez qu'il soit séparé par des virgules ?

Heureusement, vous pouvez utiliser le @query_result_separator argument pour faire exactement cela. Vous pouvez utiliser cet argument pour spécifier n'importe quel séparateur (tant qu'il s'agit d'un char(1) ).

Exemple

Voici un exemple pour montrer comment remplacer le séparateur par une virgule :

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'; 

Résultat :

Candidats potentiels pour un poste d'administrateur, peut-être ?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 rangs affectés) 

Notez que j'utilise également le @query_result_no_padding argument pour supprimer tout rembourrage qui pourrait être appliqué aux résultats.

Vous pouvez également utiliser @attach_query_result_as_file = 1 joindre les résultats dans un fichier séparé si nécessaire.

Un exemple utilisant le séparateur d'espace par défaut

Si je supprime le @query_result_separator = ',' partie de l'exemple ci-dessus, mes résultats sont séparés par le caractère d'espace par défaut.

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'; 

Résultat :

Candidats potentiels pour un poste d'administrateur, peut-être ?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 rangées affectées)