将数据从列提取到新的列sql开发人员

时间:2018-10-14 03:45:39

标签: sql plsqldeveloper

我已将数据导入SQL Developer,并且需要将数据从一列分离到新列中。例如,我有:

Temp_Title
Congo (1995)
Nadja (1993)

我需要将标题中的年份删除到名为temp_year的新列中。有人告诉我可以使用“解析”,但是我不确定从哪里开始。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您没有指定要使用的数据库;另外,您提到了“ SQL Developer”(由Oracle设计),但是用“ plsqldeveloper”标签标记了该问题,因此-实际查询可能取决于,而您没有与我们分享某些信息。

无论如何,这是一个入门示例,该示例(基于Oracle)使用两个选项:

  • 第一个使用传统 SUBSTR + INSTR组合
  • 另一种使用正则表达式

SQL> with test (temp_title) as
  2    (select 'Congo (1995)' from dual union all
  3     select 'Nadja (1993)' from dual union all
  4     select 'Back to the future (1985)' from dual
  5    )
  6  select
  7    substr(temp_title, 1, instr(temp_title, '(') - 1) title,
  8    substr(temp_title, instr(temp_title, '(') + 1, 4) year,
  9    --
 10    regexp_substr(temp_title, '(\w| )+') title2,
 11    rtrim(regexp_substr(temp_title, '\d+\)$'), ')') year2
 12  from test;

TITLE                YEAR             TITLE2               YEAR2
-------------------- ---------------- -------------------- -----
Congo                1995             Congo                1995
Nadja                1993             Nadja                1993
Back to the future   1985             Back to the future   1985

SQL>