sql >> Database >  >> RDS >> Sqlserver

Wijzig het scheidingsteken in een komma bij het e-mailen van queryresultaten in SQL Server (T-SQL)

Als je ooit Database Mail van SQL Server hebt gebruikt om de resultaten van een query te e-mailen, is het je misschien opgevallen dat de resultaten standaard worden gescheiden door een spatie.

Dit is prima als u een door spaties gescheiden resultatenset wilt, maar wat als u wilt dat deze door komma's wordt gescheiden?

Gelukkig kun je de @query_result_separator . gebruiken argument om dat te doen. U kunt dit argument gebruiken om elk scheidingsteken op te geven (zolang het een char(1) is ).

Voorbeeld

Hier is een voorbeeld om te demonstreren hoe u het scheidingsteken in een komma kunt veranderen:

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

Resultaat:

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)

Merk op dat ik ook de @query_result_no_padding . gebruik argument om eventuele opvulling te verwijderen die op de resultaten kan worden toegepast.

U kunt ook @attach_query_result_as_file = 1 . gebruiken om de resultaten indien nodig in een apart bestand bij te voegen.

Een voorbeeld met het standaard scheidingsteken voor spatie

Als ik de @query_result_separator = ',' . verwijder een deel van het bovenstaande voorbeeld zijn mijn resultaten gescheiden door het standaard spatieteken.

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

Resultaat:

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)

  1. Waarom krijg ik alle resultaten als ik een onderstrepingsteken in een LIKE-filter gebruik?

  2. Meerdere kolommen controleren op één waarde

  3. MVP-top 2013:een korte terugblik en een vooruitblik

  4. Hoe AppArmor te configureren voor MySQL-gebaseerde systemen (MySQL/MariaDB Replication + Galera)