首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查员工的电子邮件是否包含他的名字??不区分大小写。

检查员工的电子邮件是否包含他的名字??不区分大小写。
EN

Stack Overflow用户
提问于 2013-05-01 20:17:30
回答 1查看 98关注 0票数 0

当员工姓名包含在电子邮件中时,我想显示与其相关的名称和电子邮件。用户可以有多个电子邮件。

代码语言:javascript
复制
employee
id   name 
1    Steve Been
2    Rob Kem
3    Bob Kimi
代码语言:javascript
复制
Emails
emplyee_id email
1          steve@domain.com
1          007@domain.com
1          Been@domain.com
2          Robkem@domain.com 
2          Rob.Kem@domain.com 
3          Boooob@domain.com
3          kimi@domain.com   

查询不应该区分大小写。,我希望这个查询能显示如下内容:

代码语言:javascript
复制
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

我试过了,但是输出是空的:

代码语言:javascript
复制
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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-01 20:29:51

试一试

代码语言:javascript
复制
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

SQLFiddle

INSTR()是不区分大小写的,除非其中一个刺是二进制字符串,但是您总是可以为一个好的度量添加LOWER()

UPDATE:根据您的附加请求,您可以使用这样的查询来完成此任务

代码语言:javascript
复制
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

SQLFiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16325783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档