列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
------------------- ----------------------
オンタリオ州
トロント市