SQL Server:将数据类型nvarchar转换为数值时出错

时间:2018-08-22 21:12:58

标签: sql-server

对此我是陌生的,我正在尝试学习有关SQL的更多信息。我有这个例子,但仍然无法弄清楚为什么我得到这个错误:

DECLARE @xmlprice XML = '<price>1234567</price>'
DECLARE @price DECIMAL(19,4);

SET @price = @xmlprice.value('sum(price)', 'DECIMAL(19,4)');

我收到以下错误:

  

将数据类型nvarchar转换为数字时出错。

2 个答案:

答案 0 :(得分:1)

认为是一个错误,但是我不确定这是一件很奇怪的事情。通常,您将首先投影XML值,然后将它们聚合。

例如

df.loc[~df.index.duplicated(keep=False)].reindex([1, 1, 6])

此表达式表示从根“ /”开始,然后找到所有“价格”元素,选择第一个元素,然后提取其值。

您可能希望将其发布在SQL Server feedback site上,以便产品团队进行评估。

答案 1 :(得分:0)

根据您的建议,我在总和之前使用FLWOR语句和迭代(XQuery)将价格值转换为十进制。

DECLARE @xmlprice XML = '<price>1234567</price>'
DECLARE @price DECIMAL(19,4);

SET @price = @xmlprice.value('sum(for $price in //price return $price cast as xs:decimal?)', 'DECIMAL(19,4)');