对此我是陌生的,我正在尝试学习有关SQL的更多信息。我有这个例子,但仍然无法弄清楚为什么我得到这个错误:
DECLARE @xmlprice XML = '<price>1234567</price>'
DECLARE @price DECIMAL(19,4);
SET @price = @xmlprice.value('sum(price)', 'DECIMAL(19,4)');
我收到以下错误:
将数据类型nvarchar转换为数字时出错。
答案 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)');