Получение значений из нескольких строк XML в SQL (MS Server 2005) - PullRequest
0 голосов
/ 02 октября 2009

Я попытаюсь объяснить эту ситуацию настолько ясно, насколько смогу. У меня есть этот запрос ниже, который пытается получить список author_ids из столбца xml в sql server 2005, связанного с книгой, но назначение запроса @authorIds возвращает ошибку, поскольку он возвращает несколько строк, любые идеи о том, как обойти Эта проблема? Большое спасибо, ребята.

DECLARE @BookAuthor TABLE (ID int) 
DECLARE @authorIds xml
SET @authorIds = (select ListOfAuthors.query('/Authors/value') from BookRelated where ListOfAuthors is not null)

INSERT INTO @BookAuthor (ID) SELECT ParamValues.ID.value('.','VARCHAR(20)')
FROM @authorIds.nodes('/Authors/value') as ParamValues(ID) 

SELECT  a.ID,
    FullName AS Author

FROM    Author auth
INNER JOIN @BookAuthor a
ON      a.ID = auth.Id

1 Ответ

1 голос
/ 03 октября 2009

у вас есть ошибка в строке "FROM @ authorIds.nodes ('/ Authors / value') как ParamValues ​​(ID)" это должно быть "FROM @ authorIds.nodes ('value') как ParamValues ​​(ID)"

--- Test Data
DECLARE @BookRelated TABLE (ListOfAuthors XML)
DECLARE @Author TABLE (ID int, FullName VARCHAR(100))

INSERT INTO @BookRelated (ListOfAuthors) VALUES ('<Authors><value>1</value></Authors>')
INSERT INTO @Author (ID, FullName) VALUES (1, 'Matt')


-- test script
DECLARE @BookAuthor TABLE (ID int) 
DECLARE @authorIds xml

SET @authorIds = (
    select ListOfAuthors.query('/Authors/value') 
    from @BookRelated 
    where ListOfAuthors is not null)

INSERT INTO @BookAuthor (ID) 
SELECT ParamValues.ID.value('.','VARCHAR(20)')
FROM @authorIds.nodes('value') as ParamValues(ID) 

SELECT  a.ID, FullName AS Author
FROM @Author auth
INNER JOIN @BookAuthor a ON a.ID = auth.Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...