作为问题,
如何在Oracle中拆分(12345)some_string
的一个字符串列到两列12345
和some_string
?
注意:不是所有的列都是(12345)some_string
,部分列只有some_string
没有(12345)
,两个列是null
和some 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]+)', '');