SQL - 如何在选择之前检查XML字段是否已损坏/有效

时间:2018-03-14 11:34:23

标签: sql xml blob sql-server-2016 corruption

我有一个场景,其中包含XML列的表偶尔会包含XML数据,在尝试选择它时会显示以下错误:

“Ms 6611,Level 16,State 1,Line 889 XML数据类型已损坏。“

我有针对问题指出记录,但这不是我想要纠正的事情,但我反而希望我的select语句仍然从表中选择数据而不会让整个事情崩溃。如果有一种方法可以使用函数检查XML是否已损坏/有效,如果是这样,则选择一个空白值,这将是我的首选选项,或者如果不是,可能只是从结果中排除麻烦的记录。

希望这是有道理的,并提前感谢你!

示例查询哪些错误(如果我排除XML列,查询有效):

SELECT
    T.ID,
    T.XML
FROM
    TableName T

Ultimatley,这是我正在尝试运行的那种查询(如果XML损坏,我希望值字段显示为空白):

SELECT
    T.ID,
    t.c.value ('(Value)[1]', 'varchar(50)') AS Value
FROM
    TableName T
    CROSS APPLY DocumentXML.nodes('//XMLNode') t(c)

0 个答案:

没有答案