Mysql 查询以返回两列之间的正则表达式匹配项



我想比较数据库中有两列。一个是电子邮件地址,另一个是用户名。

如果用户名的第一部分与电子邮件地址的第一部分(@ 符号之前的内容(匹配,我希望返回结果。

示例数据:

用户名电子邮件地址

巴兹丘尔泽9802 badzzycshulzey@gmail.com

特罗格莱德1919 trogleddg@gmail.com

尝试了各种查询,但我似乎无法得到这个......谢谢!

你真的不需要正则表达式,字符串函数可以做到这一点:

select *
from mytable
where username like concat(substr(emailaddress, 1, locate('@', emailaddress) - 1), '%')

locate('@', emailaddress)为您提供了 arobas 在电子邮件地址中的位置,substr(emailaddress, 1, locate(...) - 1)提取了在此之前的所有内容。然后,我们可以使用右侧带有通配符的like检查username是否以电子邮件地址的该部分开头。

最新更新