Удалить десятичную из многих полей - PullRequest
0 голосов
/ 10 декабря 2011

Необходимо удалить точку из полей в столбце (тип данных varchar2). Десятичная дробь не всегда есть, но когда она есть, она всегда находится на пятой позиции, и за ней всегда стоят два нуля. (12E4.00) Нам нужно сохранить нули.

Кажется разумным использование REGEXP_REPLACE, но задаюсь вопросом, есть ли чисто SQL-способ сделать это также. Менее 100 000 строк и 28 000 экземпляров полей с десятичной дробью.

Цените всю текущую помощь.

1 Ответ

1 голос
/ 10 декабря 2011

Звучит так, будто вам просто нужно 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, '.' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...