【发布时间】:2011-03-12 11:04:04
【问题描述】:
我需要计算数据库中 @ 符号前有 3 个或更少字符的电子邮件地址的数量,例如 ab@test.com。
Oracle 中不存在 parsename 函数,我不确定如何为此编写正则表达式。任何帮助将不胜感激!
【问题讨论】:
我需要计算数据库中 @ 符号前有 3 个或更少字符的电子邮件地址的数量,例如 ab@test.com。
Oracle 中不存在 parsename 函数,我不确定如何为此编写正则表达式。任何帮助将不胜感激!
【问题讨论】:
你想要的正则表达式是:
^[^@]{0,3}@
英文是:
【讨论】:
您可以定义 WHERE 子句并使用 COUNT,或者直接跳过使用 REGEXP_COUNT:
SELECT REGEXP_COUNT(t.email, '^[^@]{0,3}@', 1, 'i') RESULT
FROM TABLE t;
使用 COUNT:
SELECT COUNT(*)
FROM TABLE t
WHERE REGEXP_LIKE(t.email, '^[^@]{0,3}@')
参考:
【讨论】:
正则表达式对此太过分了。你只需要
instr(t.email, '@') < 5 AND instr(t.email, '@') > 0
经过 cmets 的更正编辑。
【讨论】:
instr 为 joe@example.com 返回 4,因此测试应该是
以下有一点问题 instr(t.email, '@')
只要 t.email 有一个“@”,这个查询就可以工作!否则,它也会返回那些 t.email 没有'@'的条目
【讨论】: