2012-07-20 39 views
2

我卡住....爲什麼這兩個查詢返回不同的結果?在查詢中舍入錯誤?

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 
+0

請仔細閱讀http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring- varchar-without-length.aspx – 2012-07-20 14:24:56

+0

查找此帖子中更多此行爲的信息 http://beyondrelational.com/modules/2/blogs/70/posts/10824/column-length-and-data-length.aspx – Madhivanan 2012-07-20 14:11:08

回答

5

因爲你聲明的varchar沒有長度。即

declare @div varchar 

相同

declare @div varchar(1) 
+2

@littlegreen養成總是用長度定義varchar(和nvarchar)的習慣。 – 2012-07-20 14:15:16