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 作为 '10.1'
而现在我得到 ' 10.1 '
(带有我不想要的空格)而且 150 应该转换为 '150'
而不是 '150.00'
你能帮帮我吗?
正如@a_horse_with_no_name 所建议的那样,使用 FM format modifier 将去除前导 space,并且还将去除尾随零。但还远远不够:
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.
要摆脱尾随期,您需要trim:
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
我想就 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 作为 '10.1'
而现在我得到 ' 10.1 '
(带有我不想要的空格)而且 150 应该转换为 '150'
而不是 '150.00'
你能帮帮我吗?
正如@a_horse_with_no_name 所建议的那样,使用 FM format modifier 将去除前导 space,并且还将去除尾随零。但还远远不够:
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.
要摆脱尾随期,您需要trim:
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