将ntext列转换为xml并获取节点';SQL中的s值
我想从此xml中获取节点“RID”:将ntext列转换为xml并获取节点';SQL中的s值,sql,xml,parsing,sql-server-2012,Sql,Xml,Parsing,Sql Server 2012,我想从此xml中获取节点“RID”: <ts:Status xmlns:ts="DistServices"> <RID> 5ec827e9-0429-4f5a-9d4b-16d3503ff07b </RID> <PIN> 5678 </PIN> </ts:Status> 这里,数据是ntext。我将它从ntext转换为text,然后转换为xml,共转换了两次。现在,我正在以xml格式获取@数据。但是返回的RID总是空的。有
<ts:Status xmlns:ts="DistServices">
<RID>
5ec827e9-0429-4f5a-9d4b-16d3503ff07b
</RID>
<PIN>
5678
</PIN>
</ts:Status>
这里,数据是ntext。我将它从ntext转换为text,然后转换为xml,共转换了两次。现在,我正在以xml格式获取@数据。但是返回的RID总是空的。有人能帮我吗?您可以在将
ntext
数据转换为xml
后尝试:
DECLARE @DATA XML = '<ts:Status xmlns:ts="DistServices">
<RID>
5ec827e9-0429-4f5a-9d4b-16d3503ff07b
</RID>
<PIN>
5678
</PIN>
</ts:Status>'
SELECT
a.value('./RID[1]', 'NVARCHAR(MAX)') [RID],
a.value('./PIN[1]', 'NVARCHAR(MAX)') [PIN]
FROM @DATA.nodes ('*') as split(a)
注:
重要!在SQL Server的未来版本中,将删除ntext、text和image数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。改用nvarchar(max)、varchar(max)和varbinary(max)
阅读
DECLARE @DATA XML = '<ts:Status xmlns:ts="DistServices">
<RID>
5ec827e9-0429-4f5a-9d4b-16d3503ff07b
</RID>
<PIN>
5678
</PIN>
</ts:Status>'
SELECT
a.value('./RID[1]', 'NVARCHAR(MAX)') [RID],
a.value('./PIN[1]', 'NVARCHAR(MAX)') [PIN]
FROM @DATA.nodes ('*') as split(a)
RID PIN
5ec827e9-0429-4f5a-9d4b-16d3503ff07b 5678