我正在尝试查找具有以下情况的记录。
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
,但看起来这不能有字段名称。
答案 0 :(得分:2)
您可以使用LIKE
,只需将其与CONCAT
结合使用。
SELECT
ID,
name,
email
FROM
yourTable
WHERE
email LIKE CONCAT(name, '%');
CONCAT
将返回一个字符串,可用于通过email
与LIKE
进行匹配。
答案 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)