如何排列来自 db_send_email 的记事本中的字段

发布于 2024-11-03 17:32:05 字数 84 浏览 0 评论 0原文

我有带有预期结果的记事本...但是字段排列不正确。一列在一行中,另一列在另一行中。看起来不太好。我听说我们可以设置结果集的列宽度.请帮助我了解语法和示例。

I have the notepad with the expected results...But the fields are not arranged properly.One column is coming in one line and another in another like.Its not looking good.I heard like we can set the column width for the result set.Please help me with the syntax and an example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

面如桃花 2024-11-10 17:32:05

假设您的意思是使用 sp_send_dbmail 过程发送数据库邮件,而不是 db_send_email。在这种情况下,您可以通过以下方式控制输出格式。

1. 将输出线宽度设置为固定值。

EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'Mailer',
  @recipients = 'undisclosed',
  @query = 'SELECT field_int
                 , field_varchar_50
                 , field_varchar_250
            FROM mytable' ,
  @query_result_no_padding = 0,
  @query_result_width = 400 ;

所选宽度应大于查询中所有字段的长度总和,例如@query_result_width = 400。但是,这会产生太宽的行,特别是在 varchar(50)varchar(250) 字段有很多填充空间的情况下。

2. 截断字段。

EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'Mailer',
  @recipients = 'undisclosed',
  @query = 'SELECT field_int
                 , LEFT(field_varchar_50, 25)
                 , LEFT(field_varchar_250, 25)
            FROM mytable' ,
  @query_result_no_padding = 0 ;

这将生成其中 varchar(50)varchar(250) 将被截断为 25 个符号的输出。当然,您可以使用任何适当的不同值。

3. 调整字段长度。

只需添加字段长度计算并生成具有精确宽度的输出。

DECLARE @iField_varchar_250_length
SELECT @iField_varchar_250_length = MAX(LEN(field_varchar_250)) FROM mytable

DECLARE @sQuery VARCHAR(200)
SELECT @sQuery = 'SELECT field_int
                       , LEFT(field_varchar_50, 25)
                       , LEFT(field_varchar_250, ' + CAST(@iField_varchar_250_length AS VARCHAR(10)) + ')
                  FROM mytable' ,

EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'Mailer',
  @recipients = 'undisclosed',
  @query = @sQuery,
  @query_result_no_padding = 0 ;

Assuming that you mean sp_send_dbmail procedure to send database mail but not db_send_email. In such case you can control your output format in the following way.

1. Set width of output line to fixed value.

EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'Mailer',
  @recipients = 'undisclosed',
  @query = 'SELECT field_int
                 , field_varchar_50
                 , field_varchar_250
            FROM mytable' ,
  @query_result_no_padding = 0,
  @query_result_width = 400 ;

Selected width should be greater than sum of lengthes of all fields in the query, e.g. @query_result_width = 400. However, this will produce too wide lines especially in case varchar(50) or varchar(250) fields have many padding spaces.

2. Truncate fields.

EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'Mailer',
  @recipients = 'undisclosed',
  @query = 'SELECT field_int
                 , LEFT(field_varchar_50, 25)
                 , LEFT(field_varchar_250, 25)
            FROM mytable' ,
  @query_result_no_padding = 0 ;

This will produce output where varchar(50) or varchar(250) will be truncated to 25 symbols. Of course, you can use any appropriate different value.

3. Adjust field lengths.

Just add field lengths calculation and produce output with exact width.

DECLARE @iField_varchar_250_length
SELECT @iField_varchar_250_length = MAX(LEN(field_varchar_250)) FROM mytable

DECLARE @sQuery VARCHAR(200)
SELECT @sQuery = 'SELECT field_int
                       , LEFT(field_varchar_50, 25)
                       , LEFT(field_varchar_250, ' + CAST(@iField_varchar_250_length AS VARCHAR(10)) + ')
                  FROM mytable' ,

EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'Mailer',
  @recipients = 'undisclosed',
  @query = @sQuery,
  @query_result_no_padding = 0 ;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文