将nvarchar转换为int bigint时转换失败

时间:2018-03-15 09:54:52

标签: sql-server

希望这是非常直截了当的。我正在尝试将列转换为int,因此我可以总结它。

SELECT (cast(RTRIM(pricing_prices)as int)) FROM returnxx where RMAid= '5'

错误

  

转换nvarchar值时转换失败   ' 9.8000000000000007'数据类型int。

如果我尝试bigint,我会收到另一个错误

  

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

2 个答案:

答案 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