我在SQL Server数据库表中有一个XML列。它存储了来自Web服务的XML响应。
如果该网络服务超时,它将存储实际的文本。
错误。等待回复的时间已过
它实际上是将该文本存储在XML列中 - 我似乎无法查询它,因为我无法将字符串与XML值进行比较。有什么好办法吗?
在SQL Server中,一个没有任何标签的非空字符串将被视为一个独立的文本节点。
所以你可以使用 'text()[1]'
来获取XML内容中的第一个顶层文本节点,并检查该节点。
你可以使用 exist
如果你想将任何混合了顶级文本节点和元素的内容排除在考虑范围之外。
SELECT *,
your_col.value('text()[1]', 'varchar(8000)')
FROM t
WHERE your_col.exist('*') = 0 AND your_col.exist('text()') = 1