2013-11-13 2 views
0

T1:Как выбрать из таблицы и классифицировать значения в оракула/SQL

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

Я хочу, чтобы выбрать значения из T1 и вставить в другую таблицу (Т2) и добавить некоторые значения на основе провинции/города; Образец T2:

Col1  Col2  
Ontario Province 
Toronto City 

Большое спасибо!

+0

Какую версию Oracle вы используете? Всегда ли формат столбца «TAG» одинаковый? –

ответ

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
Смежные вопросы