0

T1:

ID      Tag                     Name 
001     [country].[Province]    Ontario
002     [Country].[City]        Toronto

我想从 T1 中选择值并插入到另一个表(T2)并根据省/市添加一些值;样品 T2:

Col1       Col2      
Ontario    Province 
Toronto    City

非常感谢!

4

1 回答 1

1

您可以使用regexp_substr检索TAG列的一部分:

CREATE TABLE t1 (
  id VARCHAR2(3),
  tag VARCHAR2(40),
  name VARCHAR2(40)
);

INSERT INTO t1 VALUES ('001', '[country].[Province]', 'Ontario');
INSERT INTO t1 VALUES ('002', '[country].[City]', 'Toronto');

COMMIT;

CREATE TABLE t2 (
  col1 VARCHAR2(40),
  col2 VARCHAR2(40)
);

如果您使用的是 Oracle 10g:

INSERT INTO t2
  SELECT name,
         rtrim(
           ltrim(
             regexp_substr(tag, '[[][a-zA-Z]*[]]', 1, 2),
             '['),
           ']') FROM t1;

如果您使用的是 Oracle 11g:

INSERT INTO t2
  SELECT name, regexp_substr(tag, '[[]([a-zA-Z]*)[]]', 1, 2, NULL, 1) FROM t1;

测试:

SELECT * FROM t2;

输出:

COL1 COL2                 
------------------ ----------------------
安大略省               
多伦多市
于 2013-11-13T21:00:25.987 回答