跳过Select语句中的错误记录

时间:2012-09-07 12:43:42

标签: sql database

  

可能重复:
  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记录并在选择查询中获取其他记录?另外,有没有办法让我跟踪跳过的记录?

1 个答案:

答案 0 :(得分:0)

我认为当EmployeeID元素以最终没有D的EmployeeI结束时,xml解析器不允许您对不正确的数据进行查询。您可能想要编写一个解析器来检测它,但我当然不建议这样做。纠正输入可能是更好的方法。请记住,当您的输入有问题时,请修复它!不要清楚解决它的问题。此外,无论您的xml数据有多大,并且您已经选择,xml数据类型将是存储列的最佳数据类型。

干杯