解析看起来像简化的 nvarchar 值 XML

Parse nvarchar value that looks like a simplified XML

我有一个 nvarchar(1000) 类型的列,其中包含看起来像 XML:

的内容
<Master>  
   <NodeA>lorem ipsum</NodeA>  
   <NodeB>lorem ipsum</NodeB>  
   <NodeC>lorem ipsum</NodeC>  
   <NodeD>lorem ipsum</NodeD>  
</Master>  

might 有一些回车 return 和嵌入的新行。

获取 NodeA 中的值的最简单方法是什么?

我尝试删除硬编码字符串值 <masterA> 但后来我觉得我做错了什么。

试试这个:

DECLARE @XmlTable TABLE (ID INT NOT NULL, XmlContent NVARCHAR(1000))

INSERT INTO @XmlTable (ID, XmlContent)
VALUES (1, N'<Master>  
   <NodeA>lorem ipsum</NodeA>  
   <NodeB>lorem ipsum</NodeB>  
   <NodeC>lorem ipsum</NodeC>  
   <NodeD>lorem ipsum</NodeD>  
</Master>')

SELECT
    CAST(XmlContent AS XML).value('(/Master/NodeA)[1]', 'varchar(50)')
FROM
    @XmlTable
WHERE
    ID = 1

但是如果你的列真的只存储 XML - 你应该把它变成一个 XML 列 - 这更容易(不需要总是在应用任何 XQuery 方法之前做 CAST(... AS XML)) ,并且在存储方面也进行了优化。