2013-07-02 95 views
0

我從DB得到一個返回給我intrger和小數。比方說:SQL to_char在不同的情況下需要整數和小數

選擇美元從表

有時美元是一個整數(1,2),有時它是一個小數(1.54,2.32)。如果我這樣做:

to_char(dollar,'99999999.99'),當它是十進制時,就可以了。但是,如果它是整數,我有1.00或2.00。

如果數據是整數,我不想有無用的0。我怎樣才能做到這一點?如果是整數,只需輸入整數,如果是十進制,則輸入小數。

預先感謝您。

回答

0

那麼,數據類型不會改變,所以你說的是存儲在固定或浮點表示中的整數值。可能最簡單的方法是:

select (case when to_char(dollar, '99999999.99') like '%.00' 
      then to_char(dollar, '99999999') 
      else to_char(dollar, '99999999.99') 
     end) 

也就是說,做轉換。如果最後三個字符是「.00」,則在沒有它們的情況下進行轉換。如果你不喜歡雙重轉換,你可以用算術就此別過:

select (case when 100*cast(dollar/100 as int) = dollar 
      then to_char(dollar, '99999999') 
      else to_char(dollar, '99999999.99') 
     end) 

但是,我總是擔心整數和浮點值之間的比較可能是由一些非常少量的被關閉,所以我更喜歡第一方法。

+0

它的作品,謝謝戈登! –

相關問題