首页 > 解决方案 > 当节点具有 XML 类型的数字时,.value 如何工作

问题描述

我正在尝试访问用数字而不是 SQL Server XML 数据类型上的文本定义的节点。

为什么这个陈述有效

DECLARE @myDoc xml  
DECLARE @ProdID int  
SET @myDoc = '<Root>23</Root>'  

SET @ProdID =  @myDoc.value('(/Root)[1]', 'int' )  
SELECT @ProdID

但是这个不

DECLARE @myDoc xml  
DECLARE @ProdID int  
SET @myDoc = '<1>23</1>'  
SET @ProdID =  @myDoc.value('(/1)[1]', 'int' )

标签: sqlsql-serverdatabase

解决方案


我更改了第 3 行:

DECLARE @myDoc xml  
DECLARE @ProdID int  
SET @myDoc = CAST('<Root>23</Root>' AS XML)

SET @ProdID =  @myDoc.value('(/Root)[1]', 'int' )  
SELECT @ProdID

推荐阅读