请求生成匹配首名+随机数Gmail格式的SQL正则查询以统计虚假账号
统计符合特定邮箱模式的虚假账号数量
针对你描述的虚假账号邮箱模式(firstname+随机数字+@gmail.com),可以通过正则匹配结合表中firstname字段来统计这类账号。以下是主流数据库的实现方案:
MySQL/MariaDB
使用REGEXP进行正则匹配,通过拼接firstname生成匹配规则:
SELECT COUNT(*) AS fake_account_count FROM your_table_name WHERE email REGEXP CONCAT('^', LOWER(firstname), '[0-9]+@gmail\\.com$')
LOWER(firstname)统一转为小写,避免大小写不匹配的问题^和$确保邮箱完全符合开头结尾规则[0-9]+匹配一个或多个连续数字\\.是转义后的点(正则中点表示任意字符,必须转义)
PostgreSQL
使用~*运算符实现不区分大小写的正则匹配:
SELECT COUNT(*) AS fake_account_count FROM your_table_name WHERE email ~* ('^' || LOWER(firstname) || '[0-9]+@gmail\.com$')
||是PostgreSQL的字符串拼接符~*自动忽略大小写,无需额外处理大小写问题
SQL Server(2016及以上版本)
使用REGEXP_LIKE函数,指定'i'参数启用不区分大小写匹配:
SELECT COUNT(*) AS fake_account_count FROM your_table_name WHERE REGEXP_LIKE(email, '^' + LOWER(firstname) + '[0-9]+@gmail\.com$', 'i')
注意事项
- 替换
your_table_name为你实际使用的表名 - 如果
firstname包含正则特殊字符(如.、+、*等),需要先转义这些字符。以MySQL为例,可以用REGEXP_REPLACE处理:SELECT COUNT(*) AS fake_account_count FROM your_table_name WHERE email REGEXP CONCAT('^', REGEXP_REPLACE(LOWER(firstname), '([.+*?^$(){}|\\[\\]])', '\\\\$1'), '[0-9]+@gmail\\.com$')
内容的提问来源于stack exchange,提问作者disasterkid
相关产品推荐
相关产品推荐

