Я пытаюсь разбить длинные строки (> 60 символов) на две части, но сохраняя целостность слова, содержащего 60-й символ.
Например, для строки one two three four five six seven eight nine ten eleven twelve thirteen fourteen
буква l
в слове twelve
является 60-м символом, поэтому я хотел бы разбить строку на
one two three four five six seven eight nine ten eleven
и
twelve thirteen fourteen
Пока что, сосредоточившись только на получении нужной части строки, я могу использовать REVERSE()
, чтобы получить все последнее слово
DECLARE @Input varchar(100)
SET @Input = 'one two three four five six seven eight nine ten eleven twelve thirteen fourteen'
SELECT LTRIM(RTRIM(RIGHT(@Input, CHARINDEX(' ', REVERSE(@Input)) - 1))) AS LastWholeWord
, @Input AS UnalteredString
, LEN(@Input) AS LengthOfString
, LEFT(@Input, 60) AS First60
Теперь я думал, что могу просто ограничьте последний REVERSE()
первыми 60 символами, вставив LEFT(@Input, 60)
, как таковой LTRIM(RTRIM(RIGHT(@Input, CHARINDEX(' ', REVERSE(LEFT(@Input, 60))) - 1)))
, но это, похоже, не дает желаемого результата. Я был бы рад, если бы кто-нибудь мог указать мне правильное направление !!
Спасибо за ваше время!