如何在oracle sql中将一列拆分为两列

时间:2013-08-15 17:51:54

标签: sql oracle

请帮帮我:

First_name | first_name | middle_name
           |            |
rrrr eeee  |   rrrr     | eeee
           |            |    
rrr eeeeeee|   rrr      | eeeeeee  
           |            |       
rr eeeee   |   rr       | eeeee

我想将first_name拆分为first_namemiddle_name

由于

2 个答案:

答案 0 :(得分:2)

也许这个sql代码会很有用:

SELECT 
  REGEXP_SUBSTR(name,'^[^ ]*')  first_name,
  REGEXP_SUBSTR(name, '([[:alpha:]]+)$')   middle_name
FROM TEST

注意:如果名称始终为 FIRSTNAME" SPACE"中间名即可。

您可以在此处 sql fiddle 运行此内容。

答案 1 :(得分:2)

如果你真的只需找到一个空格字符,你可以通过删除正则表达式来加快速度

SELECT 
    substr(name, 1, instr(name, ' ')-1) first_name,
    substr(name, instr(name, ' ')+1) middle_name
FROM  TEST

甚至

SELECT
  substr(name, 1, space_pos-1) first_name,
  substr(name, space_pos+1) middle_name
FROM (SELECT name,
             instr(name, ' ') space_pos
      FROM TEST)