В Sql Server 2012 вы можете использовать одну из функций разделения, доступных в Интернете (например, DelimitedSplit8K, доступных здесь ), чтобы изолировать отдельные слова.С помощью cross apply
вы можете применить функцию ко всем строкам исходной таблицы:
declare @words table (list_of_words varchar(8000))
insert into @words values
('foo')
,('bar')
,('bar, baz')
,('foobar, foo, bar, dolor')
,('lorem, ipsum')
,('ipsum')
select distinct(ltrim((rtrim(Item)))) as single_words
from @words
cross apply [dbo].[DelimitedSplit8K](list_of_words,',')
Результаты:
Начиная с SQL Server 2016, вы можете использовать string_split
для выделения отдельных слов:
declare @words table (list_of_words varchar(max))
insert into @words values
('foo')
,('bar')
,('bar, baz')
,('foobar, foo, bar, dolor')
,('lorem, ipsum')
,('ipsum')
select distinct(trim(value)) as single_words
from @words
cross apply string_split(list_of_words,',')