首页 > 解决方案 > 从 NVARCHAR(MAX) 列获取 xml 值

问题描述

我阅读了许多相关帖子,并尝试从具有NVARCHAR(MAX)任何特定标签类型的列中获取 xml 值。

CREATE TABLE dataTable (RECID NVARCHAR(MAX),XMLRECORD NVARCHAR(MAX));

我的 XMLRECORD 列将包含一个带有类似标签的数据

<row id='1'>
    <c2>Account-sample</c2>
</row>

下面附上的是我创建的一个选择查询,它产生了一个 CLOB 而不是实际值。关于如何获得实际价值的任何想法?(即账户样本)

select b.x.value('data(/row/c2)[1]', 'NVARCHAR(max)')
from dataTable a
cross apply(select cast(cast(XMLRECORD as VARCHAR(max)) as XML) x) b;

标签: sql-servernvarcharxmltype

解决方案


使用以下查询

select *, try_cast(xmlrecord as xml).value('(row/c2)[1]', 'nvarchar(500)') as c2
from dataTable

推荐阅读