Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 Server中使用XML时,这些SQL的含义是什么?_Sql_Sql Server_Xml - Fatal编程技术网

将由逗号分隔的字段内容分成多行,在SQL Server中使用XML时,这些SQL的含义是什么?

将由逗号分隔的字段内容分成多行,在SQL Server中使用XML时,这些SQL的含义是什么?,sql,sql-server,xml,Sql,Sql Server,Xml,在SQL Server中,我想将由逗号分隔的列的内容分成多行。例如 id value ----------------------- 1 aa,bb 2 aaa,bbb,ccc 将值除以id后,结果应如下所示: id value ---------------- 1 aa 1 bb 2 aaa 2 bbb 2 ccc 我

在SQL Server中,我想将由逗号分隔的列的内容分成多行。例如

id         value 
-----------------------
1          aa,bb 
2          aaa,bbb,ccc 
将值除以id后,结果应如下所示:

id        value 
----------------
1          aa 
1          bb 
2          aaa 
2          bbb 
2          ccc 
我找到的SQL语句如下:

create table tb(id int, value varchar(30)) 

insert into tb values(1,'aa,bb') 
insert into tb values(2,'aaa,bbb,ccc') 
go 

SELECT A.id, B.value 
FROM
    (SELECT 
         id, [value] = CONVERT(xml,' <root> <v>' + REPLACE([value], ',', ' 
  </v> <v>') + ' </v> </root>') 
     FROM 
         tb) A 
OUTER APPLY
    (SELECT 
         value = N.v.value('.', 'varchar(100)') 
     FROM 
         A.[value].nodes('/root/v') N(v) 
    ) B 
N.v的推断是什么?N.v.value“.”、“varchar100”、nodes“/root/v”和最后一个Nv的含义是什么

节点查询的语法不是

节点XQuery作为TableColumn

根据您的查询,N是表的别名,v是列的名称

Query value.node/root/v mean value是XML,xpath/root/v值存储在表N的v列中

其中Tc T是表的别名,c是列

节点查询的语法不是

节点XQuery作为TableColumn

根据您的查询,N是表的别名,v是列的名称

Query value.node/root/v mean value是XML,xpath/root/v值存储在表N的v列中

其中Tc T是表的别名,c是列

  SELECT value = N.v.value('.', 'varchar(100)') 
  FROM A.[value].nodes('/root/v') N(v) 
  DECLARE @x xml   
SET @x='<Root>  
    <row id="1"><name>Larry</name><oflw>some text</oflw></row>  
    <row id="2"><name>moe</name></row>  
    <row id="3" />  
</Root>'  
SELECT T.c.query('.') AS result  
FROM   @x.nodes('/Root/row') T(c)  
GO