Oracle SQL TO_CHAR可变长度
我想请您提供有关Oracle SQL中to_CHAR方法的帮助Oracle SQL TO_CHAR可变长度,sql,oracle,formatting,to-char,Sql,Oracle,Formatting,To Char,我想请您提供有关Oracle SQL中to_CHAR方法的帮助 TO_CHAR(Number_参数,'9999D99','NLS_NUMERIC_CHARACTERS='')vc_num, Number_参数是一个十进制数,通常值在10.10到1999.99之间(但不限于此),我需要创建一个VARCHAR,该值的最小表示形式最多有2个小数点。我的问题是我没有找到一个能满足我需要的面具 我需要200.99作为'200.99',但是10.1作为'10.1',而现在我得到'10.1'(带空格,我不想
TO_CHAR(Number_参数,'9999D99','NLS_NUMERIC_CHARACTERS='')vc_num,
Number_参数是一个十进制数,通常值在10.10到1999.99之间(但不限于此),我需要创建一个VARCHAR,该值的最小表示形式最多有2个小数点。我的问题是我没有找到一个能满足我需要的面具
我需要200.99作为'200.99'
,但是10.1作为'10.1'
,而现在我得到'10.1'
(带空格,我不想要)150也应该翻译成'150'
,而不是'150.00'
你能帮帮我吗?正如@a_horse_所建议的那样,使用将去掉前导空格,并且还将删除尾随的零。但它并不完全存在:
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
或者,当您发现自己时,也适用于您的数据:
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
对格式掩码使用
FM
修改器