【问题标题】:Splitting strings into 2 columns Oracle将字符串拆分为 2 列 Oracle
【发布时间】:2016-08-19 11:59:21
【问题描述】:

我正在尝试为以下内容编写 SQL 语句或简单过程。 列名:department_name 包含以下字符串:

First Name&Second Name [W] 

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

我需要为数百行执行此操作。 在这种情况下,过程或 sql 语句的外观如何? department_name 中的字符串长度和字数不同..

【问题讨论】:

  • 如果部门代码显示为 [104],您希望第二列显示 [104](带方括号)还是仅显示 104?

标签: sql oracle select procedure


【解决方案1】:
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;

【讨论】:

  • 谢谢它非常有用。
  • @m4ndy 如果某个答案解决了您的问题,那么您可以将其标记为已接受(投票按钮下方的绿色复选标记),这将表明问题已关闭。如果它没有解决您的问题,那么您可以添加关于未解决问题的评论和/或编辑您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多