2011-10-20 29 views
1

希望有人可以提供幫助。停止concat刪除領先0

我試圖添加一個||'m'我的查詢,但是當我添加concat它刪除前導零。

隨着出||'m'我得到這樣的結果:

0.00 

隨着CONCAT我得到這樣的結果,例如:

.0m 

編輯: 下面是該查詢:

round(MAX(city_longitude),1) - round(MIN(city_longitude),1)||'m' 

乾杯

+1

它會幫助,如果你實際存入您嘗試運行SQL。 – pdwalker

+0

謝謝,我忘了那一點.. –

回答

7

嘗試在TO_CHAR中將整個ROUND語句包裝爲一個格式掩碼。

TO_CHAR(round(MAX(city_longitude),1) - round(MIN(city_longitude),1), '0.00')||'m' 

這樣你有效地將字符串用的字符串,而你正在串聯數字與字符串強制的隱式轉換。

隱式轉換通常會被忽視,因爲它們會導致意想不到的結果。

Oracle說:

Oracle建議您指定顯式轉換,而不是 依靠隱式或自動轉換,原因如下:

•SQL語句是容易當你使用明確的理解 數據類型轉換函數。

•隱式數據類型轉換可能會對性能產生負面影響,特別是如果列值的數據類型被轉換爲常量的數據類型而不是其他方式。

•隱式轉換取決於其發生的上下文,並且 在任何情況下都可能無法以相同的方式工作。例如,從日期時間值轉換爲VARCHAR2值的隱式 可能會返回 意外的年份,具體取決於NLS_DATE_FORMAT 參數的值。

•隱式轉換的算法可能會在 軟件版本和Oracle產品中發生變化。顯式 轉換的行爲更具可預測性。

數字格式在這裏: http://www.oradev.com/oracle_number_format.jsp

希望它可以幫助...

+0

謝謝,很好! –

+0

不用擔心,順便說一句,你是否需要在減法之前將兩個列值進行圓整處理?如果不是,那麼在應用TO_CHAR之前簡單地返回結果會更有效率。 – Ollie

+0

我該怎麼做? :) –