T-SQL,从列中的xml获取值
Posted
技术标签:
【中文标题】T-SQL,从列中的xml获取值【英文标题】:T-SQL, get value from xml in a column 【发布时间】:2022-01-14 10:20:33 【问题描述】:我有一个带有 XML 列 (xmlCol) 的表,我正在尝试从中查询一个值。
这是 xml。
<criteria>
<factor name="Rivers" title="Rivers">
<value dataType="Int32" value="1743" description="Wilson0" />
</factor>
<factor name="OptionalAffProperties" title="Include properties">
<value dataType="String" value="FishingModel" description="Fishing Model" />
</factor>
</criteria>
这是获取列的选择。从 MyTable 中选择 xmlCol
我正在尝试将值 1743 返回到名为 RiverID 的列。
迈克
【问题讨论】:
【参考方案1】:这应该可行:
SELECT
xmlCol.value('(//factor[@name="Rivers"]/value/@value)[1]', 'int') As RiverID
FROM
MyTable
value() Method (xml Data Type) - SQL Server | Microsoft DocsXQuery Language Reference (SQL Server) - SQL Server | Microsoft Docs
【讨论】:
仅供参考,您在@name="Rivers
上缺少一个结束双引号。编辑队列已满,否则我会为您添加它。
@Austin 好地方!固定。
别担心!我没有意识到你可以这样格式化路径,所以我也很感激!
/criteria/factor
会比//factor
快【参考方案2】:
要获取属性值,可以这样查询:
select xmlCol.value('(/criteria/factor/value/@value)[1]', 'int') RiverID
from MyTable
您提供要查找的记录的 xml 路径:(/criteria/factor/value
然后是你需要的属性:/@value)[1]
。
【讨论】:
以上是关于T-SQL,从列中的xml获取值的主要内容,如果未能解决你的问题,请参考以下文章
从列中获取值并根据值是不是正确显示该行中的所有内容(LINQ - c# web API)