插入某些节点时如何防止sql:variable在xml.modify()中四舍五入?

时间:2019-07-11 06:37:13

标签: sql-server

我正在尝试将新节点插入xml变量,此新节点包含某些数字变量的值。该数字变量的值会在生成的xml中四舍五入。

这是我的示例代码:

declare @param numeric(19, 15) = 0.000000000012345; declare @xml xml = '<params/>'; set @xml.modify('insert <param>{sql:variable("@param")}</param> into (params)[1]'); select @param as [param], @xml as [params];

我希望在生成的xml中具有确切的数值。

1 个答案:

答案 0 :(得分:0)

一种解决方案是将数字值转换为字符串,然后再将其传递给修改函数:

declare @param numeric(19, 15) = 0.000000000012345;
declare @paramString nvarchar(max) = convert(nvarchar(max), @param);
declare @xml xml = '<params/>';
set @xml.modify('insert <param>{sql:variable("@paramString")}</param> into (params)[1]');
select @param as [param], @paramString as [paramString], @xml as [params];