查询中的舍入错误?

tho*_*ulb 2 sql t-sql sql-server-2008

我被困了....为什么这两个查询会返回不同的结果?

declare @div varchar
set @div = cast(4/3.0 as varchar) 
select @div
-- returns 1 

select cast(4/3.0 as varchar)
-- returns 1.3333
Run Code Online (Sandbox Code Playgroud)

Chr*_*ray 5

因为你声明varchar没有长度.即

declare @div varchar
Run Code Online (Sandbox Code Playgroud)

是相同的

declare @div varchar(1)
Run Code Online (Sandbox Code Playgroud)

  • @littlegreen养成总是用长度定义varchar(和nvarchar)的习惯. (2认同)