2014-02-11 46 views
0

我有一個導入表,其中所有列都以VARCHAR進入。哪種方法將varchar轉換爲int更好sql

其中一列是這樣的:

strSomeValue 
------------ 
1000.0000 
50000.0000 
4151.0000 

等等,等等,總是0的4位小數。

我把這個轉換成一個整數列,想知道什麼是最好的方法(最有效率)。

我有三到目前爲止:

CAST(CAST(strSomeValue as decimal(19,2)) as int) 

CAST(SUBSTRING(strSomeValue , 1, CHARINDEX('.', strSomeValue) - 1) AS INT) 

CAST(ROUND(strSomeValue,0) as int) 

到目前爲止我認爲的第三方法,使用ROUND,是最好的,根據我的非常有限的客戶端統計的知識。

我想知道是否有更好的方法,什麼是快速確定哪個查詢更快的最佳方法?客戶統計是唯一的/最好的方法,還是有更好的方法來分析這樣簡單的事情?

+2

其實,我不認爲這些在真實世界的應用程序之間有巨大的差異。我會用最可讀/最穩定的。可能很重要的方面:你確定你總是有小數點嗎?某些歐洲語言環境設置使用小數點逗號! – FrankPl

+1

實際上,您應該要求BA(業務分析師)確定他們總是4位數字,以及如何處理關於舍入的其他方案。它可能會造成業務上的差異。 – TomTom

+0

爲什麼要使用round/floor?你想要什麼輸出?爲什麼不簡單轉換(somevalue爲int) – KumarHarsh

回答

0

您實際上可以使用Floor函數來完成此操作。

SELECT FLOOR(strSomeValue)