2014-01-31 2 views
0

Мне нужно обновить столбец таблицы с результатом конкатенированной строки, полученной с помощью xmlpath.Sql: обновить строку с конкатенатой строкой, полученной с помощью xmlPath

Для Exemple, я должен сделать что-то вроде этого

Update table c 
set c.languages = 
(SELECT '\r\n'+rl.Name AS [text()] 
    from ResourceLanguage as rl 
     where rl.resource_Id=c.resource_Id 
    FOR XML PATH ('')) 

я получаю сообщение об ошибке "Неправильный синтаксис около с.

P.S: В моем Exemple, поле Языки имеет тип NVARCHAR (макс)

Может кто-нибудь мне помочь? Благодаря

+0

удалить 'c' из' 'c.languages' и c.resource_Id'. –

+0

Спасибо. Но все равно не работает. У меня ошибка Неправильный синтаксис рядом с ключевым словом 'FROM' (от первого от) – user1845394

ответ

0

Я нашел решение. Вот это:

DECLARE @tempTable TABLE 
(
    Id int, 
    Languages nvarchar(max) 
) 

INSERT @tempTable (Id, Languages) 
(
    select r1.resource_Id, Stuff((select', '+ rl.Name as [text()] 
     from ResourceLanguage as rl 
     where rl.resource_Id=c.resource_Id 
     for xml path(''), type).value('.', 'nvarchar(250)'), 1, 2, '') 
    from Resource r1 
) 

Update Resource 
Set Languages = temp.Languages 
    FROM @tempTable temp 
    where resource_Id=temp.resource_Id 
0

Написать Этот способ может быть помочь вам

Это демо-код для этого вы должны попробовать, как это:

UPDATE Table_1 

SET c = 

(

SELECT (SELECT 'White' AS Color1, 

'Blue' AS Color2, 

'Black' AS Color3, 

'Light' AS 'Color4/@Special', 

'Green' AS Color4, 

'Red' AS Color5 

FOR 

XML PATH('Colors'), 

TYPE 

), 

(SELECT 'Apple' AS Fruits1, 

'Pineapple' AS Fruits2, 

'Grapes' AS Fruits3, 

'Melon' AS Fruits4 

FOR 

XML PATH('Fruits'), 

TYPE 

) 
FOR XML PATH(''), 

ROOT('SampleXML')) 
+0

вот что я написал !! Не работает – user1845394

+0

Редактировать мой ответ – pankeel