【发布时间】:2015-04-04 23:14:24
【问题描述】:
我有一个将 XML 数据插入 SQL Server 中的 XML 列的程序,我发现 SQL Server 正在更改插入时源 XML 数据的格式。这使得之后使用相同的源 XML 查询数据变得非常困难。
例如,一个非常简单的演示来展示问题:
INSERT INTO XMLRecord (XMLData) VALUES ('<Test></Test>')
Select * from XMLrecord
返回:
<Test />
现在,如果我尝试运行查询以查看我的初始 XML 是否存在于数据库中:
select count (*) as 'Count' from XMLRecord where cast (XMLData AS NVARCHAR(MAX)) = '<Test></Test>'
0 rows returned;
但是,如果源 XML 不包含“空”标签,则插入和搜索工作正常:
INSERT INTO XMLRecord (XMLData) VALUES ('<Test>Test Values</Test>')
Select * from XMLrecord
返回:
<Test>Test Values</Test>
现在,如果我尝试运行查询以查看我的初始 XML 是否存在于数据库中:
select count (*) as 'Count' from XMLRecord where cast (XMLData AS NVARCHAR(MAX)) = '<Test>Test Values</Test>'
1 rows returned;
我希望有人可以就如何使其发挥作用提供解决方案。如何获取源 XML 块(大小、内容等未知),将其插入数据库,然后在数据库中查询我刚刚插入的 XML 的完全匹配。
数据需要以 XML 格式存储在数据库中,因为我也将它用于许多其他 xQueries。
非常感谢。
【问题讨论】:
-
如果要匹配确切的字符串,则需要将值存储为字符串而不是 XML。您仍然可以将其转换为 XQuery 的 XML。
标签: sql-server xml database