希望这是非常直截了当的。我正在尝试将列转换为int,因此我可以总结它。
SELECT (cast(RTRIM(pricing_prices)as int)) FROM returnxx where RMAid= '5'
错误
转换nvarchar值时转换失败 ' 9.8000000000000007'数据类型int。
如果我尝试bigint,我会收到另一个错误
将数据类型nvarchar转换为bigint时出错。
答案 0 :(得分:3)
首先转换为Numeric
,然后转换为INT
。
试试这个:
DECLARE @Var varchar(100)='9.8000000000000007'
SELECT CAST(CAST(@Var AS NUMERIC(35,16)) AS INT)
<强>结果:强>
9
如果您想要ROUND
值,只需转换为数字:
SELECT CAST(@Var AS NUMERIC)
<强>结果:强>
10
如果您想要DECIMAL
值,只需转换为数字:
SELECT CAST(@Var AS NUMERIC(8,2))
<强>结果:强>
9.80
答案 1 :(得分:1)
我过去有这个问题。我能够通过先将列转换为十进制来解决它,然后将其转换为整数。您可以将其强制转换为您选择的任何小数
DECLARE @pricing_prices NVARCHAR(20)='9.8000000000000007' AS pricing_prices
SELECT CAST(CAST(@pricing_prices AS DECIMAL(9,2)) AS INT)
输出
pricing_prices
9