我在Sql Server中使用xml存在一些问题。我不能在一个变量sql中合并多个xml标记。
我需要组合名字,姓氏和父亲名字。
<BODY>
<type>insert</type>
<table_name>Customer</table_name>
<First_name>Мирмухаммедов</First_name>
<Last_name>Мирмухаммедов</Last_name>
<Father_name>Rahmonovich</Father_name>
<Birth_date>12.12.2018</Birth_date>
<Country>Dushanbe</Country>
</BODY>
答案 0 :(得分:1)
您可以这样做:
set @fullName = (
select CONCAT
(
c.value('First_name[1]', 'NVARCHAR(200)'),
' ',
c.value('Last_name[1]', 'NVARCHAR(200)'),
' ',
c.value('Father_name[1]', 'NVARCHAR(200)')
)
from @XML.nodes('BODY') T(c)
)
答案 1 :(得分:0)
set @fullName=CONCAT((select T2.col.value('.[1]','VARCHAR(200)') from @XML.nodes('BODY') T(c) Cross APPLY t.c.nodes('/BODY/*') as T2(col) where T2.col.value('local-name(.)','VARCHAR(200)')='First_name'
),' ' +(select T2.col.value('.[1]','VARCHAR(200)') from @XML.nodes('BODY') T(c) Cross APPLY t.c.nodes('/BODY/*') as T2(col) where T2.col.value('local-name(.)','VARCHAR(200)')='Last_name'
),' '+(select T2.col.value('.[1]','VARCHAR(200)') from @XML.nodes('BODY') T(c) Cross APPLY t.c.nodes('/BODY/*') as T2(col) where T2.col.value('local-name(.)','VARCHAR(200)')='Father_name'
))