Как разделить предложение и получить только оставленные 15 или менее (не более 15) символов в одном столбце, но в конце это может быть полное слово

#sql #sql-server #sql-server-2017

#sql #sql-server #sql-server-2017

Вопрос:

Как разделить предложение и получить только левые 15 или менее (не более 15) символов в одном столбце, но это может быть полное слово.

Пример: Ali, House Number ABC/123, Sattelite Town, Lahore.

 Column 01           Column 02           Column 03           Column 04
Ali, House          NumberABC/123,      Sattelite Town,     Lahore.
  

Нужна поддержка здесь.

Ответ №1:

Вы можете попробовать что-то вроде этого:

 DECLARE @Str VARCHAR(100) = 'Ali, House Number ABC/123, Sattelite Town, Lahore.'

SELECT LEFT(LEFT(@Str, 15) , 15 - CHARINDEX(' ', REVERSE(LEFT(@Str, 15))) )
  

Комментарии:

1. Спасибо, но как насчет оставшихся столбцов?

Ответ №2:

Улучшение @M.Решение Ali:

 declare @Str varchar(100) =
    'Ali, House NumberABC/123, Sattelite Town, Lahore.', @bit varchar(16)
declare @tb table (split varchar(15))

set @Str  = ' '
while rtrim(@Str)>''
begin
    select  @bit = rtrim(left(left(@Str, 16),
                    16 - charindex(' ', reverse(left(@Str, 16))))),
            @Str = ltrim(substring(@str, len(@bit)   1, 100))
    insert into @tb values (@bit)
end
select * from @tb