将字符串转换为货币值

时间:2014-09-15 11:52:14

标签: sql oracle

我正在使用Oracle SQL。我的值为String类型的列,实际上应该是一种货币。

字符串值采用以下格式:

103,2 %

我需要将其转换为:

103.2

Aldo我需要将值类型转换为Float

是否有可以帮助我的良好对话功能?我需要使用Replace()函数吗?

3 个答案:

答案 0 :(得分:2)

这样的事情怎么样?

select cast(translate(col, ', %', '.') as float)

答案 1 :(得分:1)

您可以使用replace删除固定的%部分,该部分已将103,2 %更改为103,2;并将结果传递给to_number()。由于您似乎在数据库中的值和句点中有逗号十进制分区,因此您可以指定NLS_NUMERIC_CHARACTERS:

select to_number(replace('103,2 %', ' %'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

     VALUE
----------
     103.2 

如果您没有固定的格式 - 例如,可能存在或不存在空格,或者您可以使用不同的货币符号而不是% - 那么您可以使用translate作为Gordon Linoff显示,或使用正则表达式删除任何非数字字符:

select to_number(regexp_replace('103,2 %', '[^[:digit:],]'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

答案 2 :(得分:0)

您可以使用CAST(string AS DECIMAL)CAST(string AS SIGNED INTEGER)

将字符串转换为数字值