2016-07-26 36 views
1

Oracle SQLのTO_CHARメソッドに関するヘルプがあります。Oracle SQLのTO_CHAR変数の長さ

TO_CHAR(Number_parameter,'9999D99','NLS_NUMERIC_CHARACTERS = ''. ''') vc_num,

Number_Parameter私は最大で2進ポイントと値の最小表示とVARCHARを作成する必要が1999.99に10.10との間の通常の値を10進数で入ってくる(しかし、これらに限定されない)されています。私の問題は、私のニーズを満たすマスクを見つけられなかったことです。

今私は(私はしたくない空白、と)' 10.1 'を取得していながら、私はあなたが私を助けてくださいすることができ'150'ない'150.00'

に変換する必要があり150も'10.1'として'200.99'として200.99が、10.1が必要?

+3

フォーマットマスクに「FM」修飾子を使用する –

答えて

2

@a_horse_with_no_nameが示唆しているように、FM format modifierを使用すると、先頭のスペースを取り除き、末尾のゼロも削除します。しかし、それはかなりありません。

with t(number_parameter) as (
    select 200.99 from dual 
    union all select 10.10 from dual 
    union all select 150.00 from dual 
) 
select to_char(number_parameter,'FM9999D99','NLS_NUMERIC_CHARACTERS = ''. ''') vc_num 
from t; 

VC_NUM 
-------- 
200.99 
10.1  
150. 

は、あなたがそれをトリミングする必要がありますピリオドfoを取り払う:

with t(number_parameter) as (
    select 200.99 from dual 
    union all select 10.10 from dual 
    union all select 150.00 from dual 
) 
select rtrim(
    to_char(number_parameter,'FM9999D99','NLS_NUMERIC_CHARACTERS = ''. '''), 
    '.') vc_num 
from t; 

VC_NUM 
-------- 
200.99 
10.1  
150 

それとも、自分自身を発見したとして、the TM text minimum format modelはまたあなたのデータのために働く:

​​
関連する問題