2016-08-22 85 views
1

我試圖用不同的語言和不同的DB客戶端執行下面的查詢。爲什麼以及如何Mysql浮動只適用於Java?

SELECT MY_FLOAT_COL*1 FROM MY_TABLE; 

SELECT MY_FLOAT_COL FROM MY_TABLE; 

按我的觀察,第一個查詢返回結果偏離Python和DB客戶,如海蒂SQL,通過this answer作爲一個理性的。但是使用JDBC連接的Java代碼或數據庫客戶端(Squirrel)會爲上述查詢返回相同的結果。 Java有什麼神奇的功能,我怎樣才能讓這種神奇的功能與其他語言/客戶端兼容?

**注意:**這實際上是我的另一個子集question。最初的問題使用戶無法提供完整的答案。我想要更具體地回答這個問題。

+0

這聽起來像它可能更多的驅動程序問題。 – chrylis

+0

驅動程序問題與除Java以外的所有語言..? – Kannan

回答

1

正如你所提到的other question乘以MY_FLOAT_COL*1改變精度等級,因爲它被轉換爲DOUBLE

當您從客戶端檢索數據時,如果將其視爲數字,則將其轉換爲客戶端使用的類型。所以轉換髮生兩次。我想你會轉換回float。如果將其作爲BigDecimal(或作爲String)檢索到,則可以看到數據庫內部使用的確切表示形式。


注意,Java和Python之間的差是由於float內部表示,是不是在java和在python相同。 python中的float應該類似於java中的double

+0

無論我得到什麼類型,我都會得到相同的結果。我不認爲這很重要。 – Kannan

+0

嘗試發佈您的java和python代碼。所以我們可以看到差異。 –

相關問題