用于计算使用正则表达式发送的电子邮件数的SQL查询

时间:2013-11-12 16:57:39

标签: sql regex oracle

我需要一个SQL查询,可以计算使用正则表达式发送的电子邮件数量

例如

列名:SENT_EMAIL表名:EMAILS

如果SENT_EMAIL有 abc@gmail.com; xyz@hotmail.com 那么数应该是2

如果SENT_EMAIL有 abc@gmail.com 那么数应该是1

我相信我们可以使用'@'作为参考来计算SENT_EMAIL列中的电子邮件数量,但我无法想到如何。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

检查这个

select e.SENT_EMAIL, length(e.SENT_EMAIL) - length(replace(e.SENT_EMAIL, '@', '')) as mail_cnt from EMAILS e

答案 1 :(得分:1)

您可以使用REGEXP_COUNT

select regexp_count(sent_email, '[[:alnum:]]@[[:alnum:]]')
  from emails

我正在检查除了@之外的其他地方,以确保您只计算电子邮件。这在技术上是不正确的,因为电子邮件除了字母数字之外还有许多其他字符,因此它取决于您的数据。如果您只想计算连续@的数量,那就去做吧。

select regexp_count(sent_email, '@')
  from emails
相关问题