Фирма, в которой я работаю, требует, чтобы пара имя / значение была в отдельных строках, а не в таблице.В то время как мое решение могло использовать некоторую настройку, после большой работы я придумал решение с форматированием CSS.Однако я не могу понять, почему ширина столбца NAME не равна 100px, как я и просил.
Специальные символы: +0182, +0183 и +0185, соответственно.
Я буду продолжать стремиться к более элегантному решению без большого количества функций замены, но фирма больше озабочена решением «сейчас», чем элегантным.Буду признателен за отзывы / улучшения.
Письмо приходит (в Outlook) в формате, соответствующем нашей фирме:
Информация о теннисном рейтинге
Ранг:1
Имя игрока: Рафаэль Надаль
Очки: 12390
Страна: Испания
Ранг: 2
Имя игрока: Роджер Федерер
Очки: 7965
Страна: Швейцария
Ранг: 3
Имя игрока: Новак Джокович
Очки: 7880
Страна: Сербия
Вот мое решение:
CREATE TABLE #Temp
(
[Rank] [int],
[Player Name] [varchar](128),
[Ranking Points] [int],
[Country] [varchar](128)
)
INSERT INTO #Temp
SELECT 1,'Rafael Nadal',12390,'Spain'
UNION ALL
SELECT 2,'Roger Federer',7965,'Switzerland'
UNION ALL
SELECT 3,'Novak Djokovic',7880,'Serbia'
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
SET @xml = CAST(( SELECT '¶Rank:·º' + convert(varchar, [Rank]) AS 'br','','¶Player Name:·º' +[Player Name] AS 'br','',
'¶Points:·º' + convert(varchar, [Ranking Points]) AS 'br','', '¶Country:·º' + Country AS 'br'
FROM #Temp ORDER BY Rank
FOR XML PATH('br'), ELEMENTS ) AS NVARCHAR(MAX))
SET @body ='<html><head><style type=''text/css''>body{font-family:tahoma;font-size:9pt;}.h{width:100px;}</style></head><body><H3>Tennis Rankings Info</H3>'
SET @body = @body + @xml +'</body></html>'
set @body = replace(@body, '</br>', '<br />')
set @body = replace(@body, '<br><br>', '<p>')
set @body = replace(@body, '<br>', '')
set @body = replace(@body, '<br /><br />', '</p>')
set @body = replace(@body, '¶', '<span class=''h''>')
set @body = replace(@body, '·', '</span>')
set @body = replace(@body, 'º', ' ')
--select @body
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DBMail', -- replace with your SQL Database Mail Profile
@body = @body,
@body_format ='HTML',
@recipients = 'xxx@xxx.com', -- replace with your email address
@subject = 'E-mail in Tabular Format' ;
DROP TABLE #Temp