gpt4 book ai didi

xml - 在 SQL Server 中,确定给定字符串是否为有效 XML 的最佳方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 01:39:58 26 4
gpt4 key购买 nike

第三方组件正在用一些值填充表中的 nvarchar 列。大多数时候它是一个人类可读的字符串,但偶尔它是 XML(以防第 3 方组件中的一些内部异常)。

作为临时解决方案(直到他们修复它并始终使用字符串),我想解析 XML 数据并提取实际消息。

环境: SQL Server 2005;字符串的大小总是小于 1K;这张表中可能有几千行。


我遇到了几个解决方案,但我不确定它们是否足够好:

  1. 调用 sp_xml_preparedocument 存储过程并将其包装在 TRY/CATCH block 周围。检查返回值/句柄。
  2. 编写托管代码(在 C# 中),再次异常处理并查看它是否是一个有效的字符串。

这些方法似乎都没有效率。我一直在寻找类似于 ISNUMERIC() 的东西:ISXML() 函数。还有其他更好的方法来检查字符串吗?

最佳答案

I would like to parse the XML data and extract the actual message.

也许没有必要检查有效的 XML。您可以在 case 语句中使用 charindex 检查是否存在适当的 xml 标记,并使用 substring 提取错误消息。

这是一个带有简化 XML 字符串的示例,但我想您已经明白了。

declare @T table(ID int, Col1 nvarchar(1000))

insert into @T values
(1, 'No xml value 1'),
(2, 'No xml value 2'),
(3, '<root><item>Text value in xml</item></root>')

select
case when charindex('<item>', Col1) = 0
then Col1
else
substring(Col1, charindex('<item>', Col1)+6, charindex('</item>', Col1)-charindex('<item>', Col1)-6)
end
from @T

结果:

No xml value 1
No xml value 2
Text value in xml

关于xml - 在 SQL Server 中,确定给定字符串是否为有效 XML 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5381864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com