PostgreSQL中筛选含四位数字组合的邮箱数据
PostgreSQL筛选含四位连续数字的邮箱行
问题原因
你之前用的LIKE '%[0-9][0-9][0-9][0-9]%'无效,是因为PostgreSQL的LIKE不支持[0-9]这类正则字符类语法——它只会把[0-9]当作字面字符串匹配,而非数字范围。
解决方案
以下两种方法都能实现需求:
1. 使用POSIX正则匹配(推荐)
PostgreSQL支持用~运算符直接写POSIX正则,语法更简洁灵活:
SELECT * FROM 用户数据表 WHERE email ~ '\d{4}';
\d代表任意数字,{4}表示连续出现4次,这个条件会匹配邮箱中任意位置的四位连续数字。
如果想缩小范围,只匹配年份类的四位数字(比如1900-2099),可以调整正则:
SELECT * FROM 用户数据表 WHERE email ~ '19[0-9]{2}|20[0-9]{2}';
这个规则只会匹配19xx或20xx格式的四位数字,能减少部分误判。
2. 使用SIMILAR TO运算符
如果习惯SQL标准的正则语法,也可以用SIMILAR TO,它支持[0-9]字符类和数量限定符:
SELECT * FROM 用户数据表 WHERE email SIMILAR TO '%[0-9]{4}%';
内容的提问来源于stack exchange,提问作者Dim Ch
相关产品推荐
相关产品推荐

