我有一个像€1.580(1580€)的字符串。 通过执行以下语句,数字变为:
select to_number(SUBSTR(col1,2)) from TAB1 where riga = 2;
Number Result: 1.58
我想保持0,因为实数是1580,我想显示1.580。我怎么能这样做?
谢谢。
答案 0 :(得分:2)
使用NLS_NUMERIC_CHARACTERS
的{{1}}和NLS_CURRENCY
选项的几个选项:
Oracle 11g R2架构设置:
TO_NUMBER
查询1 :
CREATE TABLE tab1 (
col1 VARCHAR2( 200 )
);
INSERT INTO tab1 VALUES ( '€ 1.580' );
<强> Results 强>:
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 |
:
查询2 :
TO_CHAR
<强> Results 强>:
SELECT TO_CHAR(
TO_NUMBER(
REPLACE( col1, ' ' ),
'L999G999',
'NLS_CURRENCY=''€'' NLS_NUMERIC_CHARACTERS='',.'''
),
'FM999G999',
'NLS_NUMERIC_CHARACTERS='',.'''
)AS value2
FROM tab1
但是您应该将值存储为数字,并且只要您想将其格式化为货币,那么只需将| VALUE2 |
|--------|
| 1.580 |
与适当的NLS选项一起使用,并执行 NOT 将其存储为格式化的字符串。
答案 1 :(得分:0)
如果您有固定的数字,那么您需要像这样使用
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)