You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用sp_send_dbmail时,如何将SQL查询结果改为逗号分隔CSV格式?

解决sp_send_dbmail生成逗号分隔CSV的问题

嘿,你这问题很好解决!当前结果是制表符分隔,核心原因就是你用了@query_result_separator=@tab这个参数,把它改成逗号就行啦。

直接给你调整后的完整执行语句:

EXEC msdb.dbo.sp_send_dbmail 
    @recipients ='test@gmail.com',
    @query= @Query,
    @subject= 'Test',
    @attach_query_result_as_file=1,
    @query_attachment_filename='test.csv',
    @query_result_separator=N',',  -- 这里把@tab换成逗号,N前缀确保Unicode兼容
    @query_result_no_padding= 1,
    @query_result_width=32767,
    @append_query_error = 0,
    @query_result_header =0,
    @importance = 'High',  -- 注意High要加单引号,否则会被当成变量报错
    @sensitivity = 'Private'

关键修改说明:

  • 核心调整:把@query_result_separator=@tab替换成@query_result_separator=N','N'前缀是为了确保逗号以Unicode字符传递,避免特殊场景下的乱码问题。
  • 小细节修复@importance@sensitivity的参数值是字符串类型,必须用单引号括起来,不然SQL Server会把它们当成未定义的变量,大概率触发报错。

如果你的查询结果里本身包含逗号(比如某字段值是"张三,李四"),生成的CSV可能会出现格式混乱。这时候可以额外配置字段包围规则,示例如下:

EXEC msdb.dbo.sp_send_dbmail 
    @recipients ='test@gmail.com',
    @query= @Query,
    @subject= 'Test',
    @attach_query_result_as_file=1,
    @query_attachment_filename='test.csv',
    @query_result_separator=N'","',
    @query_result_quote=1,  -- 开启字段双引号包围
    @query_result_no_padding= 1,
    @query_result_width=32767,
    @append_query_error = 0,
    @query_result_header =0,
    @importance = 'High',
    @sensitivity = 'Private'

内容的提问来源于stack exchange,提问作者Ravi Patel

火山引擎 最新活动