如何从表中进行选择并在oracle / sql中对值进行分类

时间:2013-11-13 20:48:14

标签: sql oracle

T1:

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

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

Col1       Col2      
Ontario    Province 
Toronto    City

非常感谢!

1 个答案:

答案 0 :(得分: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                 
------------------- ----------------------
Ontario             Province               
Toronto             City