从许多字段中删除小数

时间:2011-12-09 20:51:37

标签: oracle oracle11g

需要从列中的字段中删除点(varchar2数据类型)。小数并不总是存在,但是当它是,它总是在第五个位置,并且它后面总是有两个零。 (12E4.00)我们需要保留零。

似乎合理使用了REGEXP_REPLACE,但是想知道是否还有纯粹的SQL方法来完成它。在100,000行和28,000个字段实例中嵌入了小数。

感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

听起来你只需要一个简单的REPLACE

SQL> with x as (
  2    select '123E4.00' str from dual
  3    union all
  4    select '123K5.00' from dual
  5    union all
  6    select '123K123' from dual
  7  )
  8  select replace( str, '.' )
  9    from x;

REPLACE(
--------
123E400
123K500
123K123

您需要将其转换为针对您的表格的UPDATE语句

UPDATE some_table
   SET some_column = REPLACE( some_column, '.' )
 WHERE some_column != REPLACE( some_column, '.' )