我有一个SQL查询,它返回所有公司记录,忽略那些使用Postgresql(info+random_name@example.com)匹配给定模式的电子邮件的记录,也包括加号。
普通电子邮件模式为'random_name@example.com'
我的SQL查询如下:
SELECT * from companies
where email !~ E'^(info)+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+';
语法看起来是否正确?
以下查询与模式匹配:
SELECT * from companies
where email ~ E'^(info\+)+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+';
现在如何扭转它,因为!〜似乎没有忽略匹配模式
正确的语法确实如下:
SELECT * from companies
where email ~ E'^info\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+';
答案 0 :(得分:1)
逃生(双重逃脱)加号:
E'^(info)\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+'
here __^^
此外,没有必要与(info)
E'^info\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+'
答案 1 :(得分:1)
更确切地说:
SELECT *
FROM companies
WHERE email ~ E'^info\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}';
这并不能提供域名中允许使用的äöü
等特殊字符。
答案 2 :(得分:0)
测试并告诉我们?
我认为你必须改变正则表达式的开头,例如:
^info\+[A-Z...