Создать строку с определенным количеством пробелов в SQL Server - PullRequest
0 голосов
/ 08 октября 2019

Итак, я пытаюсь создать хранимую процедуру в SQL Server, которая отправляет электронное письмо, отформатированное так, чтобы оно выглядело определенным образом. Я хочу, чтобы это выглядело следующим образом:

##date##    ##credit##
            ##debit##

Где точно совпадают столбцы дебета и кредита. Проблема в том, что все, что я пробую, приводит к:

##date##    ##credit##
        ##debit##

Я пробовал:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(right(replicate(' ',25) + '##date##',25), 'Debit: $##debit##')
, char(13)
, CONCAT(right(replicate(' ',25) + ' ',25), 'Credit: $##credit##'));

И:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(LEFT('##date##' + replicate(' ', 25), 25), 'Debit: $##debit##')
, char(13)
, CONCAT(LEFT('' + replicate(' ', 25), 25), 'Credit: $##credit##'));

И:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(LEFT('##date##' + space(30), 30), 'Debit: $##debit##')
, char(13)
, CONCAT(LEFT('' + space(30), 30), 'Credit: $##credit##'));

И:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(CAST('##date##' as CHAR(30)), 'Debit: $##debit##')
, char(13)
, CONCAT(CAST('' as CHAR(30)), 'Credit: $##credit##'));

Ничто не заставляет столбцы выстраиваться в ряд. Как создать строку, в которой фактически совпадают столбцы кредита и дебета?

Я хочу, чтобы пробел в нижней строке содержал то же количество пробелов, что и дата в верхней строке.

Спасибо.

1 Ответ

1 голос
/ 08 октября 2019

Использование пробелов для форматирования в html никогда не будет работать хорошо. Вероятно, самое простое решение - просто использовать HTML-таблицу. Я думаю, вы хотели бы, чтобы три колонки выстроились в линию красиво и прямо. Примерно так довольно чисто.

declare @lineText nvarchar(max) = '<table><tr><td rowspan="2" valign="top">##date##</td><td>Debit:</td><td>$##debit##</td></tr><tr><td>Credit:</td><td>$##credit##</td></tr></table>'
...