2010-07-27 208 views
4

我在MS SQL中劃分了一些整數x & y,我想結果是浮點形式。 5/2應該等於2.5。當我只是做SQL類型鑄造

SELECT 5/2 

我得到2,這並不讓我驚訝,因爲它是從兩個整數創建一個int。我知道我可以強迫它做一個浮動做:

SELECT CAST(5 AS FLOAT)/CAST(2 AS FLOAT); 

但這似乎是矯枉過正。我發現我可以很容易地(和更可讀取)通過使用

SELECT (0.0+5)/2; 

我猜,這僅僅是某種隱含的類型轉換的得到同樣的結果?有什麼理由,哪種方法更好/更糟?

+0

如果你使用文字(而不是變量),那麼你也可以使用5.0/2.0。我的猜測是你做了0.0+,因爲5實際上是你的代碼中的一個變量或列,但只是想我會提到它。 – 2010-07-27 20:32:02

+0

或者如果你只想要2位小數,乘以100,所以你的客戶端應用程序看到250. – PostMan 2010-07-27 20:41:57

+0

是的,它實際上是變量。謝謝! – loneboat 2010-07-27 20:42:00

回答

2

在封面之下,實施沒有什麼區別。隱式強制轉換完成與顯式強制轉換相同的任務。

2

不知道什麼是更短更可讀的,因爲真正的閱讀理解涉及。

SELECT CAST(5 AS FLOAT)/CAST(2 AS FLOAT); 

真的是沒有什麼疑問的意圖是在這裏,可以理解,當你從現在開始,或當另一開發商看它第計6個月回來的代碼。

+0

謝謝你的回答,JeffO!請注意,我沒有聲稱只是「縮短」它更易於閱讀 - 通常當我查看代碼時,這是一個大括號/函數混亂的代碼,我很難看到它的「一目瞭然」 ,而不是我提供的最後一個例子。但是你的觀點已經被採納 - 如果你把它分開,它就更加明確了它在做什麼。 再次感謝! – loneboat 2010-07-28 13:43:25