Разделите строку, а затем объедините слова в SQL
Здравствуйте, у меня есть 2 стола:
Account(ID(PK), Name, Country) AccountSubstrings(accSubstringID(PK), AccountID, substring)
В таблице Account, столбце 'Name', мне нужно разделить строку на отдельные слова, а затем объединить разделенные слова, начиная с другого первого слова каждый раз. Эти новые подстроки будут вставлены в новую строку таблицы AccountSubstrings.
Я хочу сделать функцию или хранимую процедуру, чтобы сделать это, как я буду проходить в
@Name
из таблицы счетов.Например, одно "имя" в таблице счетов:
@Name = 'This is a sentence'
Это должно быть отделено как таковое:
This Thisis Thisisa Thisisasentence is isa isasentence a asentence sentence
Если кто-нибудь знает, как я мог бы достичь этого в качестве функции для передачи в моей колонке, пожалуйста, дайте мне знать!Спасибо!
Что я уже пробовал:
Мне дали помощь, чтобы получить следующее, Но я не могу правильно настроить его как функцию или передать столбец, а не просто принять строку. Он также не работает, если в предложении есть повторяющиеся слова, но он работает хорошо:
declare @s varchar(max) = 'This is a sentence'; with words as ( select s.value as word, row_number() over (order by charindex(s.value, @s)) as seqnum from string_split(@s, ' ') s ), cte as ( select seqnum, word as combined, format(seqnum, '000') as seqnums from words union all select w.seqnum, concat(cte.combined, ' ', w.word), concat(seqnums, ':', format(w.seqnum, '000')) from cte join words w on w.seqnum = cte.seqnum + 1 ) select * from cte order by seqnums;
Richard MacCutchan
Разделите строку на массив.
For each word in array For each nextword in array + 1 Append nextword to word