通过保持相同的数字转换为数字(字符串)
convert to number (string) by keeping the same number
我有一个类似 € 1.580 (1580 €) 的字符串。
通过执行以下语句,数字变为:
select to_number(SUBSTR(col1,2)) from TAB1 where riga = 2;
Number Result: 1.58
我想保留0,因为实数是1580,我想显示1.580。我该怎么做?
谢谢。
如果你有固定位数那么你需要这样使用
select Convert(numeric(18,3),to_number(SUBSTR(col1,2))) from TAB1 where riga = 2;
Number Result: 1.580
或者
you can put in your to_number function of returns with numeric(18,3)
几个选项使用 NLS_NUMERIC_CHARACTERS
和 NLS_CURRENCY
选项与 TO_NUMBER
:
Oracle 11g R2 架构设置:
CREATE TABLE tab1 (
col1 VARCHAR2( 200 )
);
INSERT INTO tab1 VALUES ( '€ 1.580' );
查询 1:
SELECT TO_NUMBER(
SUBSTR( col1, 2 ),
'999G999',
'NLS_NUMERIC_CHARACTERS='',.'''
) AS value1,
TO_NUMBER(
REPLACE( col1, ' ' ),
'L999G999',
'NLS_CURRENCY=''€'' NLS_NUMERIC_CHARACTERS='',.'''
) AS value2
FROM tab1
| VALUE1 | VALUE2 |
|--------|--------|
| 1580 | 1580 |
如果你想将其重新格式化为字符串,只需再次使用 TO_CHAR
:
查询 2:
SELECT TO_CHAR(
TO_NUMBER(
REPLACE( col1, ' ' ),
'L999G999',
'NLS_CURRENCY=''€'' NLS_NUMERIC_CHARACTERS='',.'''
),
'FM999G999',
'NLS_NUMERIC_CHARACTERS='',.'''
)AS value2
FROM tab1
| VALUE2 |
|--------|
| 1.580 |
但是您应该将该值存储为数字,每当您想将其格式化为货币时,只需使用 TO_CHAR( value, 'L999G999' )
和适当的 NLS 选项并执行 NOT 将其存储为格式化字符串。
我有一个类似 € 1.580 (1580 €) 的字符串。 通过执行以下语句,数字变为:
select to_number(SUBSTR(col1,2)) from TAB1 where riga = 2;
Number Result: 1.58
我想保留0,因为实数是1580,我想显示1.580。我该怎么做?
谢谢。
如果你有固定位数那么你需要这样使用
select Convert(numeric(18,3),to_number(SUBSTR(col1,2))) from TAB1 where riga = 2;
Number Result: 1.580
或者
you can put in your to_number function of returns with numeric(18,3)
几个选项使用 NLS_NUMERIC_CHARACTERS
和 NLS_CURRENCY
选项与 TO_NUMBER
:
Oracle 11g R2 架构设置:
CREATE TABLE tab1 (
col1 VARCHAR2( 200 )
);
INSERT INTO tab1 VALUES ( '€ 1.580' );
查询 1:
SELECT TO_NUMBER(
SUBSTR( col1, 2 ),
'999G999',
'NLS_NUMERIC_CHARACTERS='',.'''
) AS value1,
TO_NUMBER(
REPLACE( col1, ' ' ),
'L999G999',
'NLS_CURRENCY=''€'' NLS_NUMERIC_CHARACTERS='',.'''
) AS value2
FROM tab1
| VALUE1 | VALUE2 |
|--------|--------|
| 1580 | 1580 |
如果你想将其重新格式化为字符串,只需再次使用 TO_CHAR
:
查询 2:
SELECT TO_CHAR(
TO_NUMBER(
REPLACE( col1, ' ' ),
'L999G999',
'NLS_CURRENCY=''€'' NLS_NUMERIC_CHARACTERS='',.'''
),
'FM999G999',
'NLS_NUMERIC_CHARACTERS='',.'''
)AS value2
FROM tab1
| VALUE2 |
|--------|
| 1.580 |
但是您应该将该值存储为数字,每当您想将其格式化为货币时,只需使用 TO_CHAR( value, 'L999G999' )
和适当的 NLS 选项并执行 NOT 将其存储为格式化字符串。