簡體   English   中英

Oracle SQL TO_CHAR可變長度

[英]Oracle SQL TO_CHAR variable length

我想向您尋求有關Oracle SQL中TO_CHAR方法的幫助。

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

Number_Parameter以十進制數形式出現,通常的值在10.10到1999.99之間(但不限於此)我需要創建一個VARCHAR,其值的最小表示形式最多為2個小數點。 我的問題是我還沒有找到滿足我需要的口罩。

我需要200.99作為'200.99'但需要10.1作為'200.99' 10.1 '10.1'而現在我得到的是' 10.1 ' (帶有空格,我不想)也應該轉換為'150'而不是'150.00'

你能幫我嗎?

正如@a_horse_with_no_name所建議的那樣,使用FM格式修飾符將去除前導空格,還將刪除尾隨零。 但這還不完全是:

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.   

要擺脫尾隨時期,您需要進行以下調整:

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

或者,如您所知, TM文本最小格式模型也適用於您的數據:

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                                                             

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM