2016-07-26 5 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 사이의 일반적인 값으로 진수로 들어오는 (그러나 이것에 한정되지 않음)된다 . 내 문제는 내가 내 필요를 채워줄 가면을 찾지 못했기 때문이다. 지금은 또한 150 '150'로 번역해야하지 '150.00'

당신이 나에게 제발 도와 드릴까요 ' 10.1 ' (I 원하지 않는 공백으로) 무엇입니까 동안

나는 '10.1''200.99'로 200.99하지만 10.1해야합니까?

+3

형식 마스크에 'FM'한정자 사용 –

답변

2

@a_horse_with_no_name이 제안 했으므로 FM format modifier을 사용하면 선행 공백을 제거하고 후행 0도 제거합니다. 그러나 그것은 아주가 아니다 :

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은 또한 당신의 데이터를 작동합니다

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,'TM') vc_num 
from t; 

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