我正在尝试将varchar转换为bigint。然后将其插入到int列中。我发现我没有得到预期的价值。然后我尝试了以下陈述:
DECLARE @varData VARCHAR(50)
SET @varData = '0000019.33'
select cast(@varData *cast(100 as float) as bigint)
select cast(@varData *cast(100 as float) as varchar)
select cast(cast(@varData *cast(100 as float) as varchar) as float)
结果:
1932
1933
1933
我无法理解为什么会出现这种差异。但是当我将值更改为0000029.33
时,结果没有差异。
我被困住了,不知道为什么会这么发生。需要帮助...... !!!
答案 0 :(得分:1)
请参阅此Difference between numeric,float and decimal in sql server
对于你的问题,你应该尝试CAST @vardata作为数字,像这样
SELECT CAST(CAST(@varData AS numeric(27,9)) * 100 AS bigint)
答案 1 :(得分:1)
DECLARE @varData VARCHAR(50),
@float float,
@bigint bigint
SET @varData = '0000019.33'
set @bigint = convert ( bigint, (convert ( float, @vardata )) )
print @bigint
--or
set @float= convert ( float, @vardata )
set @bigint=convert ( bigint, @float)
print @bigint