В базе данных SQL Server 2008 у меня есть столбец с несколькими значениями, разделенными точками с запятой.Некоторые значения содержат двоеточия.Пример данных:
key:value;key2:value;blah;foo;bar;A sample value:whee;others
key:value;blah;bar;others
A sample value:whee
Я хочу получить все уникальные значения из каждой строки в отдельных строках:
key:value
key2:value
blah
foo
bar
A sample value:whee
others
Я просмотрел различные функции split
, но все онипохоже, что имеют дело с жестко закодированными строками, а не со строками из столбца в таблице.Как я могу это сделать?
Редактировать: Томас ответ получил!Вот мой последний запрос:
With SampleInputs As
(
select distinct myColumn from [myDatabase].[dbo].myTable where myColumn != ''
)
, XmlCte As
(
Select Cast( '<z>' + Replace( myColumn, ';', '</z><z>' ) + '</z>' As xml ) As XmlValue
From SampleInputs As I
)
Select Distinct Y.z.value('.','nvarchar(max)') As Value
From XmlCte
Cross Apply XmlValue.nodes('//z') Y(z)
Я предполагаю, что вещи XmlValue.nodes
и Y.z.value
- это магия.O_o