Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL从带有格式化输出的XML列中选择_Sql_Sql Server - Fatal编程技术网

SQL从带有格式化输出的XML列中选择

SQL从带有格式化输出的XML列中选择,sql,sql-server,Sql,Sql Server,如何选择以逗号分隔并用自定义格式修饰的XML列表值例如:x 输入示例,它将有多行 1 | <User Name="AAA" /><User Name="BBB" /> 2 | <User Name="CCC" /><User Name="DD" /> 我的进步 DECLARE @xml XML SELECT @xml = N' <User Name="AAA"/> <User Name="BBB"/>' De

如何选择以逗号分隔并用自定义格式修饰的XML列表值例如:x

输入示例,它将有多行

1 |    <User Name="AAA" /><User Name="BBB" />
2 |    <User Name="CCC" /><User Name="DD" />
我的进步

DECLARE @xml XML
SELECT @xml = N'
<User Name="AAA"/>
<User Name="BBB"/>'

Declare @TempT TABLE (id int, data xml)

INSERT INTO @TempT VALUES (1,@xml)

set @xml  = N'
<User Name="CCC"/>
<User Name="DDD"/>'
INSERT INTO @TempT VALUES (2,@xml) 

SELECT * from @TempT

DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+', ' ,'') 
+ 'x'+T.C.value('@Name', 'nvarchar(50)') +'x' 
FROM @xml.nodes('User') T(C)
SELECT @listStr

DBFIDLE

请在问题中添加数据库管理工具的名称。您使用的是哪种产品?SQL只是一种查询语言,而不是特定数据库产品的名称。MSSQL server 2016此查询不是通用的,因为对于我需要编辑的每个新记录,选择查询不是按记录编辑两项吗?请通过添加真实的XML内容来澄清问题。
DECLARE @xml XML
SELECT @xml = N'
<User Name="AAA"/>
<User Name="BBB"/>'

Declare @TempT TABLE (id int, data xml)

INSERT INTO @TempT VALUES (1,@xml)

set @xml  = N'
<User Name="CCC"/>
<User Name="DDD"/>'
INSERT INTO @TempT VALUES (2,@xml) 

SELECT * from @TempT

DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+', ' ,'') 
+ 'x'+T.C.value('@Name', 'nvarchar(50)') +'x' 
FROM @xml.nodes('User') T(C)
SELECT @listStr
Declare @TempT TABLE (id int, data xml)
insert into @TempT values (1, N'<User Name="AAA"/><User Name="BBB"/>');
insert into @TempT values (2, N'<User Name="CCC"/><User Name="DDD"/>');

SELECT * from @TempT;

select 'x' + data.value('(User/@Name)[1]', 'varchar(50)') + 'x,'
       + 'x' + data.value('(User/@Name)[2]', 'varchar(50)') + 'x'
from   @TempT 
GO
id | data -: | :------------------------------------- 1 | <User Name="AAA" /><User Name="BBB" /> 2 | <User Name="CCC" /><User Name="DDD" /> | (No column name) | | :--------------- | | xAAAx,xBBBx | | xCCCx,xDDDx |
declare @TempT table(data xml)

insert into @TempT (data) values
(N'<User Name="AAA"/><User Name="BBB"/><User Name="CCC"/>'),
(N'<User Name="CCC"/><User Name="DDD"/>');

select stuff((
             select ',x'+N.X.value('.', 'nvarchar(50)')+'x'
             from T.data.nodes('/User/@Name') as N(X)
             for xml path(''), type
             ).value('text()[1]', 'nvarchar(max)'), 1, 1, '')
from @TempT as T;
-------------------
xAAAx,xBBBx,xCCCx
xCCCx,xDDDx