Nếu bạn đã từng sử dụng Thư cơ sở dữ liệu của SQL Server để gửi email kết quả của một truy vấn, bạn có thể nhận thấy rằng các kết quả được phân tách bằng dấu cách theo mặc định.
Điều này là tốt nếu bạn muốn tập hợp kết quả được phân tách bằng dấu cách, nhưng nếu bạn muốn tập hợp kết quả được phân tách bằng dấu phẩy thì sao?
May mắn thay, bạn có thể sử dụng @query_result_separator
lập luận để làm điều đó. Bạn có thể sử dụng đối số này để chỉ định bất kỳ dấu phân tách nào (miễn là nó là char (1) ).
Ví dụ
Dưới đây là một ví dụ để minh họa cách thay đổi dấu phân cách thành dấu phẩy:
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';
Kết quả:
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)
Lưu ý rằng tôi cũng đang sử dụng @query_result_no_padding
để xóa bất kỳ khoảng đệm nào có thể được áp dụng cho kết quả.
Bạn cũng có thể sử dụng @attach_query_result_as_file = 1
để đính kèm kết quả trong một tệp riêng biệt nếu được yêu cầu.
Một ví dụ sử dụng Dấu cách Mặc định
Nếu tôi xóa @query_result_separator = ','
từ ví dụ trên, các kết quả của tôi được phân tách bằng ký tự khoảng trắng mặc định.
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';
Kết quả:
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)