可能重复:
Safe-casting text to XML
我正在使用存储过程来选择记录(超过80000)并将这些记录插入另一个表中。我的查询如下,用于选择存储过程内的记录。
SELECT EmployeeID,CAST(EmployeeInformation AS xml) as ei, CreatedTimeStamp
FROM Employee WITH (NOLOCK)
EmployeeInformation
列包含字符串格式的XML数据。 (我不能改变列的格式)
我的问题是,如果EmployeeInformation
中有任何错误的XML数据选择查询失败,并且存储过程失败。
例如。错误的XML:<Employee><EmployeeID></EmployeeI></Employee>
[此处开始标记EmployeeID
与结束标记EmployeeI
不相同
有没有办法可以跳过错误的XML记录并在选择查询中获取其他记录?另外,有没有办法让我跟踪跳过的记录?
答案 0 :(得分:0)
我认为当EmployeeID元素以最终没有D的EmployeeI结束时,xml解析器不允许您对不正确的数据进行查询。您可能想要编写一个解析器来检测它,但我当然不建议这样做。纠正输入可能是更好的方法。请记住,当您的输入有问题时,请修复它!不要清楚解决它的问题。此外,无论您的xml数据有多大,并且您已经选择,xml数据类型将是存储列的最佳数据类型。
干杯