Mysql 检查员工电子邮件是否包含其姓名-不区分大小写

Mysql 检查员工电子邮件是否包含其姓名-不区分大小写,mysql,select,join,Mysql,Select,Join,当员工姓名包含在电子邮件中时,我希望显示姓名和与其关联的电子邮件。一个用户可以有多封电子邮件 employee id name 1 Steve Been 2 Rob Kem 3 Bob Kimi 查询不应区分大小写。我希望此查询显示以下内容: name email Steve Been steve@domain.com Steve Been Been@domain.com Rob Kem Robkem@dom

当员工姓名包含在电子邮件中时,我希望显示姓名和与其关联的电子邮件。一个用户可以有多封电子邮件

employee
id   name 
1    Steve Been
2    Rob Kem
3    Bob Kimi


查询不应区分大小写。我希望此查询显示以下内容:

name            email
Steve Been      steve@domain.com
Steve Been      Been@domain.com
Rob Kem         Robkem@domain.com 
Rob Kem         Rob.Kem@domain.com       
Bob Kimi        kimi@domain.com

我尝试了此操作,但得到了空输出:

select empl.Name as 'employee Name', em.email as 'Product Name'

from email em JOIN employee empl
ON em.employee_id = empl.ID

WHERE FIND_IN_SET(LOWER(empl.Name),LOWER(em.Name))
试一试

INSTR()
不区分大小写,除非其中一个stings是二进制字符串,但您始终可以添加
LOWER()
,以获得更好的度量

更新:根据您的额外请求,您可以使用如下查询来完成此操作

SELECT name, 
       total, 
       matched, 
       total - matched unmatched
  FROM (
SELECT e.name,
       COUNT(*) total,
       SUM(CASE WHEN INSTR(m.email, SUBSTRING_INDEX(e.name, ' ', 1)) > 0 
                  OR INSTR(m.email, SUBSTRING_INDEX(e.name, ' ', -1)) THEN 1 ELSE 0 END) matched
  FROM emails m JOIN
       employee e ON m.emplyee_id = e.id
 GROUP BY e.id, e.name) q

首先,您需要分出标记(名字和姓氏,以及@前面和“.”之间的项目),然后您需要将它们相互比较。类似于pro!!!多谢彼得!演示是一个很棒的举动!!!!再次感谢大家!!!!嗨,彼得,我想请你帮个忙,我能知道员工的姓名,以及有多少电子邮件匹配,有多少不匹配吗?提前谢谢你@mongotop这样的问题值得额外发帖。不管怎样,请看更新的答案。非常感谢你,b/c你的查询我不得不更改我构建的工具上的许多查询!比
LIKE
功能好上千倍
SELECT e.name,
       m.email
  FROM emails m JOIN
       employee e ON m.emplyee_id = e.id
 WHERE INSTR(m.email, SUBSTRING_INDEX(e.name, ' ', 1)) > 0 
    OR INSTR(m.email, SUBSTRING_INDEX(e.name, ' ', -1)) > 0
SELECT name, 
       total, 
       matched, 
       total - matched unmatched
  FROM (
SELECT e.name,
       COUNT(*) total,
       SUM(CASE WHEN INSTR(m.email, SUBSTRING_INDEX(e.name, ' ', 1)) > 0 
                  OR INSTR(m.email, SUBSTRING_INDEX(e.name, ' ', -1)) THEN 1 ELSE 0 END) matched
  FROM emails m JOIN
       employee e ON m.emplyee_id = e.id
 GROUP BY e.id, e.name) q