SQL 'Stuff' для объединения добавить 2 пробела - демонстрация Rextester прилагается - PullRequest
0 голосов
/ 14 октября 2018

У меня есть сценарий, где я объединяю 3 строки вместе.Длина каждой строки равна 25, поэтому при объединении я хочу, чтобы строки имели фиксированную ширину.

Желаемый формат вывода:

**String1(length 22 + 3spaces)String2(length 9 +16 spaces)String3(length8+17spaces)**

Токовый вывод:

****String1(length 22 + 3spaces)**2 additional spaces**String2(length 9 +16 spaces)**2 additional spaces**String3(length8+17spaces)**2 additional spaces**

Я не хочу, чтобы отображались дополнительные пробелы.Есть ли способ сделать это?

https://rextester.com/GSWML31014

Прикрепленная демонстрационная программа здесь.Любая помощь?!

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Вы можете просто привести их к char(25) - SQL Server добавит столько конечных пробелов, сколько необходимо - Вам не нужен stuff, потому что у вас нет разделителя для удаления из начала результата.

Вам даже не нужно объединять пустую строку, потому что после использования cast у столбца не будет псевдонима, и поэтому for xml path('') просто объединит значения.Для получения дополнительной информации см. Этот ответ.

SELECT CAST(cid AS CHAR(25))
FROM #temp1
FOR XML PATH('')

Результат: '1001 1001 1001 ' (добавлено ' для отображения длины строки)

0 голосов
/ 14 октября 2018

для строки из 25 символов перед объединением

SELECT (
           SELECT LEFT(t1.testdata + SPACE(25), 25)
           FROM   #temp1 t1
           FOR    XML PATH ('')
       ) AS TheOutput
...