#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