将正则表达式模式转换为 sql

Convert Regex pattern to sql

我有一个 SQL 数据库,其中包含 table 封电子邮件。 我想 select 所有具有正则表达式模式字符的电子邮件:

^[^ @]+@([^ @.]+\.)+[^ @.]+$

我正在尝试写请求,但我有错误。谁能帮帮我?

您指定的模式不需要正则表达式。您可以使用 like:

where email like '%@%.%' and
      email not like '%@%@%' and    -- only one @
      email not like '%.%.%' and    -- only one .
      email not like '% %'          -- no space

正则表达式的使用取决于您使用的数据库(但 like 是 SQL,因此它应该适用于所有数据库)。当然,如果你的(未指定的)数据库支持正则表达式,你仍然可以使用它们。但是,如果这样做,您可能会做一些研究,因为有更好的电子邮件匹配正则表达式。

这是在 SQL 查询中使用 RegEx 的示例

SELECT * from table WHERE email REGEXP '^[^ @]+@([^ @.]+\.)+[^ @.]+$';

让我知道它有效。

谢谢,这就是对我有用的解决方案:

WHERE 邮箱 !~ '^[^ @]+@([^ @.]+.)+[^ @.]+$'