繁体   English   中英

将ntext列转换为xml并在SQL中获取节点的值

[英]Convert ntext column to xml and get a node's value in SQL

我想从此xml获取节点“ RID”:

<ts:Status xmlns:ts="DistServices">
<RID>
5ec827e9-0429-4f5a-9d4b-16d3503ff07b
</RID>
<PIN>
5678
</PIN>
</ts:Status>

我在SQL Server 2012中使用以下查询:

DECLARE @data xml  
DECLARE @RID varchar(256) 
select @data = CAST(CAST(Data AS text) AS XML) from message where index=1
select @data
SET @RID =  @data.value('(/ReplicationStatus/RID)[1]', 'varchar(256)' )  
SELECT @RID 

在这里,数据是ntext。 我两次将其从ntext转换为text,然后转换为xml。 现在,我以xml格式获取@data。 但是返回的RID始终为null。 有人可以帮我弄这个吗?

您可以在将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)

结果:

RID                                   PIN
5ec827e9-0429-4f5a-9d4b-16d3503ff07b  5678

注意: 重要 在将来的SQL Server版本中,将删除ntext,text和image数据类型。 避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。 请改用nvarchar(max),varchar(max)和varbinary(max)。

阅读https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/ntext-text-and-image-transact-sql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM