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中更改任何内容。您能否列出您的电子邮件列可能包含的所有可能的分隔符?电子邮件
列中是否有特殊字符?