我有一个nvarchar(1000)
类型的列,其中包含类似于XML
的内容:
<Master>
<NodeA>lorem ipsum</NodeA>
<NodeB>lorem ipsum</NodeB>
<NodeC>lorem ipsum</NodeC>
<NodeD>lorem ipsum</NodeD>
</Master>
值might
有一些回车符并且嵌入了新行。
在NodeA
中获取值的最简单方法是什么?
我已尝试删除硬编码字符串值<masterA>
,但后来我觉得我在这里做错了。
答案 0 :(得分:2)
试试这个:
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)
),并且它也在储存条款。