【发布时间】:2011-07-19 21:45:14
【问题描述】:
第三方组件正在用一些值填充表中的nvarchar 列。大多数时候它是人类可读的字符串,但偶尔它是 XML(以防 3rd 方 comp 中的一些内部异常)。
作为临时解决方案(直到他们修复它并始终使用字符串),我想解析 XML 数据并提取实际消息。
环境: SQL Server 2005;字符串的大小总是小于 1K;此表中可能有几千行。
我遇到了几个解决方案,但我不确定它们是否足够好:
- 调用
sp_xml_preparedocument存储过程并将其包装在 TRY/CATCH 块周围。检查返回值/句柄。 - 编写托管代码(在 C# 中),再次处理异常并查看它是否为有效字符串。
这些方法似乎都没有效率。我正在寻找类似于ISNUMERIC() 的东西:ISXML() 函数。还有其他更好的检查字符串的方法吗?
【问题讨论】:
-
为什么你的 2 个解决方案不够用?缺少什么?
-
如果字符串不以
<开头,那么您大概知道它肯定不是XML。 -
@rene:我的意思是“高效” :) 如果行数大幅增加,上述 2 个解决方案听起来无法扩展。
-
查看下面的 TRY_CONVERT 答案
标签: xml sql-server-2005 tsql