我有一个场景,其中包含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)