如何在Oracle中将' (12345)some_string '的一个字符串列拆分为' 12345 ',' some_



作为问题,

如何在Oracle中拆分(12345)some_string的一个字符串列到两列12345some_string?

注意:不是所有的列都是(12345)some_string,部分列只有some_string没有(12345),两个列是nullsome string

对于您发布的示例数据,这可能是一个选项(从第5行开始):

SQL> with test (col) as
2    (select '(12345)some_string' from dual union all
3     select 'another_string'     from dual
4    )
5  select regexp_substr(col, 'd+') col1,
6         substr(col, instr(col, ')') + 1) col2
7  from test;
COL1               COL2
------------------ ------------------
12345              some_string
another_string
SQL>

假设如下表:

create table my_table (my_column varchar2(30));
insert into my_table values ('(12345)some_string');
commit;

1)添加一个新列到表

alter table my_table add new_column number;`

2)填充新列

update my_table set new_column = regexp_substr(my_column, '^(([1-9]+))', 1, 1, NULL, 1); 

3)更新原列

update my_table set my_column = regexp_replace(my_column, '^([1-9]+)', '');

最新更新