Оставьте пробел, игнорируя символ / пробел

У меня есть задача выбрать несколько столбцов и показать каждый набор столбцов в одной строке, но с требуемым форматом. Первый набор данных будет использовать 127 пробелов, включая "AAAA", [LV_WRR], "D", [LV_WRR] и [ID], но длина [ID] варьируется, и это является проблемой. [FTA] должен начинаться с пробела 128, независимо от длины, используемой [ID].

Это то, что я до сих пор:

SELECT
    'AAAA'
  + [LV_WRR]
  + 'D'
  + [LV_WRR]
  + [ID]
  + SPACE(120 - LEN([ID]))
  + [FTA]
  + [FT_ID]
FROM MyTable

Столбец [ID] содержит данные различной длины.

Есть идеи?

Благодарю.

1 ответ

Попробуй это:

SELECT 
LEFT('AAAA' + [LV_WRR] + 'D' + [LV_WRR] + [ID] + REPLICATE(' ',127),127)  + [FTA] + [FT_ID]
FROM MyTable

REPLICATE создает строку пробелов длиной 127 символов. Это добавляется к строке, образованной другими значениями столбца и константами. LEFT затем берет 127 крайних левых символов этой строки и добавляет значения из [FTA] а также [FT_ID] колонны. Результатом является то, что значение для FTA всегда начинается с позиции 128.

Пример демонстрации можно найти здесь.

Другие вопросы по тегам