我的数据库维护不善,其中包含员工信息。人力资源部要求提供一份报告,列出与保险范围相关的员工姓名与保险单上的姓名不匹配的情况。
两个表中名称的格式不一致。它始终是姓氏,然后是名字,但您可能会在任一表格中看到名为 Steven J. Smith 的虚构员工的以下任何内容:
- 史密斯,史蒂文
- 史密斯,史蒂文
- 史密斯,史蒂文·J。
- 史密斯,史蒂文·J。
我需要运行一个查询来查找 EMPLOYEE.EMP_NAME <> INSURANCE.SUBSCRIBER_NAME 的实例,同时允许名称格式存在差异,如上所示(即选择“Smith,Steven J.”和“Smith,Steven”(可能)同一个人并与他们联系)。
SELECT
EMPLOYEE.EMP_NO
, EMPLOYEE.EMP_NAME
, INSURANCE.SUBSCRIBER_NAME
, INSURANCE.PAYOR_NAME
FROM EMPLOYEE
INNER JOIN INSURANCE ON EMPLOYEE.EMP_NO = INSURANCE.EMP_NO
WHERE EMPLOYEE.EMP_NAME <> INSURANCE.SUBSCRIBER_NAME
我知道我想做一个子字符串来忽略中间的首字母,但是我该如何解释忽略逗号后是否有空格?