gpt4 book ai didi

mysql - 检查员工电子邮件中是否包含他的姓名 - 不区分大小写

转载 作者:行者123 更新时间:2023-11-29 08:31:58 26 4
gpt4 key购买 nike

当电子邮件中包含员工姓名时,我想显示姓名以及与其关联的电子邮件。一个用户可以拥有多个电子邮件。

employee
id name
1 Steve Been
2 Rob Kem
3 Bob Kimi
<小时/>
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
<小时/>

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

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))

最佳答案

尝试

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() 以获得良好的测量结果。

更新:根据您的附加请求,您可以使用这样的查询来完成此操作

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

关于mysql - 检查员工电子邮件中是否包含他的姓名 - 不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com