0

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

例如

列名:SENT_EMAIL 表名:EMAILS

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

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

我确信我们可以使用“@”作为参考来计算 SENT_EMAIL 列中的电子邮件数量,但我不知道如何。

先感谢您。

4

2 回答 2

1

检查这个

select e.SENT_EMAIL, length(e.SENT_EMAIL) - length(replace(e.SENT_EMAIL, '@', '')) as mail_cnt from EMAILS e
于 2013-11-12T17:01:52.243 回答
1

您可以使用REGEXP_COUNT

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

我正在检查除那里以外的其他@地方,以确保您只计算电子邮件。这在技术上是不正确的,因为电子邮件可以包含许多其他字符而不是字母数字,因此这取决于您的数据。如果您只想计算@连续的数量,那么就这样做。

select regexp_count(sent_email, '@')
  from emails
于 2013-11-12T17:01:58.400 回答