У меня есть таблица «Blah» с PK-столбцом BlahID и XML-столбцом BlahItems в базе данных на SQL Server 2005.
Эта таблица имеет следующие записи ...
BlahID BlahItems
------ ------------------------------------------------------
1 <root><item name="Fred" /><item name="Wilma" /></root>
2 <root><item name="Lisa" /><item name="Bart" /></root>
Как я могу запросить эту таблицу, чтобы получить следующее ....
BlahID BlahItem
------ --------
1 Fred
1 Wilma
2 Lisa
2 Bart
Самое близкое, что мне удалось получить, - это ФУНКЦИЯ для каждой записи, которая делает что-то вроде следующего ...
CREATE FUNCTION dbo.Blahs(@id int)
RETURNS @list TABLE (BlahID int, BlahItem nvarchar(max))
BEGIN
DECLARE @xml AS xml
SELECT @xml = BlahItems FROM dbo.Blah AS b WHERE b.BlahID = @id
INSERT INTO @list
SELECT @id, tbl.col.value('@name','nvarchar(max)')
FROM @xml.nodes('/root/item') tbl(col)
RETURN
END
SELECT * FROM dbo.Blahs(1)
BlahID BlahItem
------ --------
1 Fred
1 Wilma
Моя конечная цель - создать ВИД «расширенных» данных, а затем выполнить запрос к представлению.