mysql select query - 将一个字段与另一个字段匹配

时间:2011-02-23 16:19:20

标签: mysql sql

我正在尝试查找具有以下情况的记录。

ID |     name   |      email
 1      Robert        robert@gmail.com
 2      William       bill@gmail.com
 3      Michael       michael@gmail.com
 4      Micahel       mike@gmail.com

根据上表,我想找到“电子邮件字段”中包含“名称”的记录,这里记录1和3应该是输出而不是2和4.我有什么办法可以做这个比较?

我试过阅读有关正则表达式,但找不到任何东西。如果它是相同值的比较,那将是直截了当的,但我对这个没有任何线索。我想到了LIKE,但看起来这不能有字段名称。

4 个答案:

答案 0 :(得分:2)

您可以使用LIKE,只需将其与CONCAT结合使用。

SELECT
    ID,
    name,
    email
FROM
    yourTable
WHERE
    email LIKE CONCAT(name, '%');

CONCAT将返回一个字符串,可用于通过emailLIKE进行匹配。

答案 1 :(得分:2)

确切的语法取决于您希望如何定义关系。

您是否在电子邮件地址的任何地方寻找姓名? (这会很慢)

select id,name,email
from your_table
where email like concat('%',name,'%')

就在电子邮件地址的开头?

select id,name,email
from your_table
where email like concat(name,'%')

就在@符号之前?

select id,name,email
from your_table
where email like concat(name,'@%')

答案 2 :(得分:1)

这应该有效

SELECT * FROM table WHERE email LIKE (CONCAT('%',name,'%'))

答案 3 :(得分:1)

select * from your_table where lower(substring_index(email,'@',1))=lower(name)