数据类型的nodes()方法是否按xml文档顺序返回节点?
例如,如果有以下数据:
declare @xml xml
set @xml = '<Fruits><Apple /><Banana /><Orange /><Pear /></Fruits>'
Run Code Online (Sandbox Code Playgroud)
被查询为
select T.c.query('.')
from @xml.nodes('/Fruits/*') T(c)
Run Code Online (Sandbox Code Playgroud)
元素将按文档顺序返回吗?select如果order by省略了子句,则返回的行的顺序是未定义的.是这样的select ... from ... .nodes(),还是特殊的?
在某些情况下,是否可以在以下查询的输出中获取非空行集:
declare @xml xml
set @xml = '<Data><Element OrderNo="1" /><Element OrderNo="2" />'
+ '<Element OrderNo="3" /><Element OrderNo="4" />'
+ '<Element OrderNo="5" /></Data>'
select * from (
select T.c.value('.', 'int') OrderNo1,
row_number() over (order by @@spid) OrderNo2
from @xml.nodes('/Data/Element/@OrderNo') T(c)) sq
where OrderNo1 != OrderNo2
Run Code Online (Sandbox Code Playgroud) 如何限制子字符串以提取SQL Server中两个空格之间的文本?
柱
2017-03-09 Today ABC.XYZ Work_In_Progress
Run Code Online (Sandbox Code Playgroud)
输出应为:
ABC.XYZ
Run Code Online (Sandbox Code Playgroud)
我可以从第二个空格拉出,但不能限制到第三个空格:
SELECT ID, SUBSTRING(HISTORY, CHARINDEX(' ', HISTORY, CHARINDEX(' ', HISTORY) +1)+1,LEN(HISTORY))
from Test;
Run Code Online (Sandbox Code Playgroud) 我正在使用下面的查询来拆分名称,如下所示:
select value from STRING_SPLIT('Name1~Name2~Name3' , '~' );
Run Code Online (Sandbox Code Playgroud)
如何获得第二个名字,即Name2,不使用WHERE条件?
注意:名称可以是动态的
我需要找出如何编写 T-SQL 来获取数据库中每一行中的第 5 个单词