Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thay đổi Dấu phân cách thành Dấu phẩy khi gửi kết quả truy vấn qua email trong SQL Server (T-SQL)

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)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mô phỏng CONNECT BY PRIOR của Oracle trong SQL Server

  2. Một cách để trích xuất từ ​​dữ liệu giá trị DateTime mà không cần giây

  3. Không thể sử dụng vị từ CONTAINS hoặc FREETEXT trên bảng hoặc chế độ xem được lập chỉ mục vì nó không được lập chỉ mục toàn văn bản

  4. SQL Server Internals:Lập kế hoạch Caching Pt. I - Tái sử dụng các kế hoạch

  5. Xóa tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)