2
DECLARE @xml xml ='<Root><Child><Number>
80</Number></Child></Root>'

SELECT  c.value('(./Number)[1]', 'int') AS Number  FROM @xml.nodes('Root/Child') T(c)

我从文件中获取 xml,所以如果节点的值(这里是 80)在新行中,则在使用上述查询选择 xml 时,我收到如下错误:


将 nvarchar 值“ 80”转换为数据类型 int 时,消息 245,级别 16,状态 1,第 4 行转换失败。

但是如果 xml 在同一行中声明,例如DECLARE @xml xml ='<Root><Child><Number>80</Number></Child></Root>'

它会正常工作。我怎么能解决这个问题。任何人都请帮我继续

4

1 回答 1

3

尝试使用该number功能:

DECLARE @xml xml ='<Root><Child><Number>
80</Number></Child></Root>'

SELECT  c.value('number((./Number)[1])', 'int') AS Number
FROM @xml.nodes('Root/Child') T(c)
于 2013-09-03T05:49:06.787 回答