【发布时间】:2021-08-19 12:50:15
【问题描述】:
这是一些示例数据
ID | sys1lname | sys2lname
------------------------------------
1 | JOHNSON | JOHNSON
2 | FULTON | ANDERS-FULTON
3 | SMITH | SMITH-DAVIDS
4 | HARRISON | JONES
目标是查找姓氏不匹配的记录,但允许在 sys2lname 中的某个位置找到 sys1lname 时,它可能是也可能不是连字符的名称。所以从上面的数据来看,只有记录 4 应该返回。
当我将这个(SUBSTRING(sys2lname, CHARINDEX(sys2lname, ccm.NAME_LAST), LEN(sys1lname))) 放在SELECT 语句中时,它将正确返回与sys1lname 匹配的sys2lname 部分。
但是当我在WHERE 子句中使用它时
WHERE 1=1
AND sys1lname <> sys2lname
OR sys1lname not in ('%' + (SUBSTRING(sys2lname, CHARINDEX(sys1lname, sys2lname), LEN(sys1lname))))
带有连字符名称的记录在结果集中。
我不知道为什么。
【问题讨论】: