前回の質問の続き
私は oracle 11g DB を使用しており、その中の文字列列を操作する必要があります。列には、次の形式で複数の電子メール アドレスが含まれます。
jgoozooll@gmail.com;dzhookep@gmail.com;admzmoore@outlook.com
私がやりたいことは、末尾に「@gmail.com」がないものをすべて取り出すことです (この例では、admzmoore@outlook.com.com が削除されます)。ただし、admzmoore@outlook.com は、このように、実際の固定形式はありません。唯一の形式は、各アドレスがセミコロンで区切られていることです。
列のすべての行を実行し、@gmail.com 以外のものを削除する 1 つのコマンドでこれを実装する方法はありますか? この種の処理が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
誰にとっても突出したものはありますか?
ありがとうございます。