将字符串拆分为2列Oracle

时间:2016-04-25 21:47:48

标签: sql oracle select procedure

我正在尝试编写下面的SQL语句或简单的过程。 列名称为nav.push(...),其中包含以下字符串字符:

Month
5/1/2015
6/1/2015
8/1/2015
9/1/2015
10/1/2015
11/1/2015
12/1/2015
1/1/2016
2/1/2016
3/1/2016
4/1/2016

我需要拆分两件事: department_name在名为First Name&Second Name [W] 的第二列中的First Name&Second Namedepartment_name列中[W]

我需要为数百行做这件事。 在这种情况下,过程或sql语句将如何显示? 字符串的长度和department_name中的字数不同..

1 个答案:

答案 0 :(得分:0)

SELECT TRIM( SUBSTR( department_name, 1, INSTR( department_name, '[' ) - 1 ) )
         AS department_name,
       SUBSTR( department_name, INSTR( department_name, '[' ) )
         AS department_code
FROM   your_table;

SELECT REGEXP_SUBSTR( department_name, '(.*?)\s*(\[.*?\])', 1, 1, NULL, 1 )
         AS department_name,
       REGEXP_SUBSTR( department_name, '(.*?)\s*(\[.*?\])', 1, 1, NULL, 2 )
         AS department_code
FROM   your_table;

或者,如果您不想要部门代码中的括号,那么:

SELECT REGEXP_SUBSTR( department_name, '(.*?)\s*\[(.*?)\]', 1, 1, NULL, 1 )
         AS department_name,
       REGEXP_SUBSTR( department_name, '(.*?)\s*\[(.*?)\]', 1, 1, NULL, 2 )
         AS department_code
FROM   your_table;