将正则表达式模式转换为 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 邮箱 !~ '^[^ @]+@([^ @.]+.)+[^ @.]+$'
我有一个 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 邮箱 !~ '^[^ @]+@([^ @.]+.)+[^ @.]+$'