Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当有多个分隔符时,如何将一列拆分为两列_Sql_Oracle - Fatal编程技术网

Sql 当有多个分隔符时,如何将一列拆分为两列

Sql 当有多个分隔符时,如何将一列拆分为两列,sql,oracle,Sql,Oracle,源列 目标列 Id | primary_email| secondary_email 01 | aemail1 | wemail2 02 | bemail1 | xemail2 03 | cemail1 | yemail2 04 | demail1 | zemail2 在某些情况下,where也是一个分隔符。如果不是pl/SQL,我们可以使用SQL。请帮助我如何解决这个问题。您可以使用正则表达式将电子邮件一分为二。 此示例在一个或多个连续分隔符、空格或

源列


目标列

Id | primary_email| secondary_email
01 | aemail1      | wemail2
02 | bemail1      | xemail2
03 | cemail1      | yemail2
04 | demail1      | zemail2

在某些情况下,where也是一个分隔符。如果不是pl/SQL,我们可以使用SQL。请帮助我如何解决这个问题。您可以使用正则表达式将电子邮件一分为二。 此示例在一个或多个连续分隔符
、空格或&

select 
  ID, 
  regexp_replace(EMAIL, '^(.*)[,\s&]+.*', '\1') AS PRIMARY_EMAIL,
  regexp_replace(EMAIL, '.*[,\s&]+(.*)', '\1') AS SECONDARY_EMAIL 
from TABLE_NAME

您可以使用正则表达式将电子邮件一分为二。 此示例在一个或多个连续分隔符
、空格或&

select 
  ID, 
  regexp_replace(EMAIL, '^(.*)[,\s&]+.*', '\1') AS PRIMARY_EMAIL,
  regexp_replace(EMAIL, '.*[,\s&]+(.*)', '\1') AS SECONDARY_EMAIL 
from TABLE_NAME

似乎您现在已经学到了这一课-永远不要将数据与单独的项存储在同一列中。最好的方法是规范化表。在这里您可以找到一些线索
http://stackoverflow.com/questions/23649813/split-comma-seperated-values-of-a-column-in-row-through-oracle-sql-query
我在这里使用多个分隔符,而不是单个分隔符如果我在运行时数据输入中使用&it弹出窗口,则此处也包含分隔符。因此,请帮助我如何在SQL中执行操作,并且不想从Source中更改任何内容。您能否列出您的
电子邮件
列可能包含的所有可能的分隔符?
email
列中是否会有特殊字符?似乎您已经吸取了教训-永远不要将数据作为单独的项目存储在同一列中。最好的方法是规范化表格。在这里您可以找到一些线索
http://stackoverflow.com/questions/23649813/split-comma-seperated-values-of-a-column-in-row-through-oracle-sql-query
这里我使用了多个分隔符,而不是一个分隔符&如果我在运行时数据输入中使用&it弹出窗口,那么也包括了它。因此,请帮助我如何在SQL中执行操作,并且不想从Source中更改任何内容。您能否列出您的
电子邮件
列可能包含的所有可能的分隔符?
电子邮件
列中是否有特殊字符?