首页 > 解决方案 > 从电子邮件字符串中删除特殊符号

问题描述

我需要替换电子邮件字符串中的一些字符,正是这样的操作:

lower_email = str.lower(str.split(email,'@')[0])
nopunc_email = re.sub('[!@#$%^&*()-=+.,]', ' ', lower_email)
nonum_email = re.sub(r'[0-9]+', '', nopunc_email).strip()

但是在 SQL 中

我尝试使用 expression TRANSLATE(lower(email), 'a1_a.a-a@1-+()a ', 'a a a a'),但它没有给我解决方案。

提前致谢!

例如:

import re
email = 'some_email.example-2021@gmail.com'
lower_email = str.lower(str.split(email,'@')[0])
nopunc_email = re.sub('[!@_#$%^&*()-=+.,]', ' ', lower_email)
nonum_email = re.sub(r'[0-9]+', '', nopunc_email).strip()

result 'some email example'

标签: sqlregexoraclere

解决方案


SELECT email,
       TRIM(
         TRANSLATE(
           LOWER(SUBSTR(email, 1, INSTR(email, '@') - 1)),
           '!_#$%^&*()-=+.,0123456789',
           '               '
         )
       ) AS translated
FROM   table_name

其中,对于样本数据:

CREATE TABLE table_name (email) AS
SELECT 'some_email.example-2021@gmail.com' FROM DUAL;

输出:

电子邮件 已翻译
some_email.example-2021@gmail.com 一些电子邮件示例

db<>在这里摆弄


推荐阅读