Десятичная точка удаляется перед обновлением до символьной переменной - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть данные в следующем формате, и я хочу обновить столбец таблицы назначения типа varchar2 с указанными ниже значениями.Но проблема в том, что он обновляется как .462 вместо 0.462, используя обрезку с ведением '0'.

source              destination column
-----------------   ------------------
0000004.304300000   4.3043
0000005.504500000   5.5045
0000141.400000000   141.4
0000138.900000000   138.9
0000000.462000000   0.462
0000000.000297000   0.000297

1 Ответ

0 голосов
/ 31 декабря 2018

Немного TO_CHAR ing и TO_NUMBER ing с подходящей маской формата могут сделать эту работу.Посмотрите на пример:

SQL> create table test (source varchar2 (20), destination varchar2(20));

Table created.

SQL> insert into test (source)
  2    select '0000004.304300000' from dual union all
  3    select '0000000.462000000' from dual union all
  4    select '0000141.400000000' from dual union all
  5    select '0000033.000000000' from dual;

4 rows created.

SQL> alter session set nls_numeric_characters = '.,';

Session altered.

SQL> update test set
  2    destination = rtrim(to_char(to_number(source), 'fm999990D99999999'), '.');

4 rows updated.

SQL> select * From test;

SOURCE               DESTINATION
-------------------- --------------------
0000004.304300000    4.3043
0000000.462000000    0.462
0000141.400000000    141.4
0000033.000000000    33

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...