上一个问题的后续
我正在使用 oracle 11g 数据库,需要在其中操作字符串列。该列包含多个采用以下格式的电子邮件地址:
jgoozooll@gmail.com;dzookep@gmail.com;admzmoore@outlook.com
我想要做的是取出最后没有'@gmail.com'的任何东西(在这个例子中 admzmoore@outlook.com.com 将被删除)但是 admzmoore@outlook.com 可能是第一封电子邮件列的下一行,所以这种方式没有真正的固定格式,唯一的格式是每个地址用分号分隔。
无论如何,是否可以通过一个命令来实现这一点,以遍历列中的每一行并删除不是@gmail.com 的任何内容?我不太确定这种处理在 SQL 中是否可行。只是在寻找你的想法!
在以下代码中出现上述“FROM”错误,我终生无法弄清楚原因。有人可能会让我看起来很愚蠢,但我必须抓住这个机会。可能还有其他错误:) 这是我的代码:
SELECT REMIT_TO.ID
, LISTAGG(EMAIL, ';') WITHIN GROUP(ORDER BY REMIT_TO.ID) REMIT_TO.EFT_EMAIL_ADDR
FROM (SELECT REMIT_TO.ID
, regexp_substr(REMIT_TO.EFT_EMAIL_ADDR, '[^;]+', 1, RN) email
FROM IQMS.REMIT_TO
CROSS JOIN (SELECT ROWNUM RN
FROM(SELECT MAX (REGEXP_COUNT(REMIT_TO.EFT_EMAIL_ADDR, '[^;]+')) ML
FROM IQMS.REMIT_TO
)
CONNECT BY LEVEL <= ML
)
)
WHERE EMAIL LIKE '%@gmail.com%'
GROUP BY REMIT_TO.ID
对任何人来说有什么突出的吗?
谢谢你们。