首页 新闻 会员 周边

xml类型字段values()方法数据类型转换错误?

0
悬赏园豆:20 [待解决问题]

遇到一个令人抓狂的问题,希望大家帮帮忙:
用的是sqlserver2012,有一个表字段类型为xml,然后用这种方式读取:

select field.value('(//tag[@name="abc"]/@value)[1]','int')
from tb
where ....

表内xml数据如下:

<root>
<tag name="msg" value="你好" />
<tag name="abc" value="1000" />
<tag name="cde" value="10" />
<tag name="efg" value="100" />
</root>

即,根据xml元素属性值查询该元素另一个属性的值。

现在遇到的问题是,直接从字段进行查询,会报类型转换错误,而且始终是报:
在将nvarchar数据"你好"转换为int时失败

但是如果改为这样操作:

declare @v xml;
select @v=field from tb where ...
select @v.value('(//tag[@name="abc"]/@value)[1]','int');

则完全不会报错而且正确能取到值。

目前完全没有思绪,不知道到底哪里出错……试了换库、重建表、重新写入xml,都不行。
希望大家有以教我,谢谢!

showmemoney的主页 showmemoney | 初学一级 | 园豆:4
提问于:2020-07-03 19:57
< >
分享
所有回答(1)
0

明明就是字串,為什麼你要指定INT 型別

RosonJ | 园豆:4910 (老鸟四级) | 2020-07-06 13:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册