SQL WHERE REGEXP_LIKE带元字符

时间:2017-12-29 15:20:04

标签: sql oracle oracle11g

我查询的记录有两种不同的格式。每个人至少有1条电子邮件记录,格式为John.Doe@abc.com。有些人的第二条记录是他们的电子邮件是DoeJ@abc.com。

如何查询电子邮件格式为John.Doe@abc.com的记录?

我尝试使用以下SQL语句执行此操作,但我返回一个空结果:

Select * from email where regexp_like(emailaddress, '. (@)')

最终产品将用于与其他一些查询的连接,因此选择不同的值不是一个选项。环境是Oracle DB,因为这将通过多个连接完成,效率越高越好。有没有人有任何想法我做错了什么,或其他方法来实现这个目标?

谢谢你, 约书亚

2 个答案:

答案 0 :(得分:0)

如何使用like

where emailaddress like '%.%@%'

第一种格式似乎通过在&符号之前设置一段时间来区分。

答案 1 :(得分:0)

您可以使用REGEXP_LIKE:

Select * from email where regexp_like(emailaddress, '\S*\.\S*\@\S*\.\S*')

使用“\ S *”匹配所有非空白字符

或只是一个常规的L​​IKE:

Select * from email where emailaddress LIKE '%.%@%.%'

不确定Oracle中%占位符中包含哪些字符,因此您应该对其进行测试。

REGEXP将为您提供更严格的模式匹配控制。

让我知道它是否有效。