T-SQL 2012 charindex比较多个字符串不匹配



在SQL Server 2012数据库中,我想查找lastname至少不是teacherD列的"一部分"的所有记录。

以下SQL大约90%的时间都有效:

SELECT lastname, teacherD
FROM test.dbo.table145    
WHERE CHARINDEX(LOWER(lastName), LOWER([teacherD])) = 0 

问题是有时teacherD列在时间旁边有特殊字符。上面的SQL认为这是有区别的。

以下是存在问题的示例

lastname       teacherD  
--------------------------------
smith          smith, darell
smith          smith-bright joan 

如果可能的话,用户还想检查姓氏的一部分是否包含在teacherID中。以下是我所指的一些例子:

lastname       teacherD
------------------------------------
corbly-tip     corbly, annette b
baker-hage     cubs - bakerhage - 8c
king grie      king, bev  

你能给我看一些关于如何解决第1部分和第2部分的SQL吗?

要解决第一部分,请执行以下操作:

SELECT lastname, teacherD
FROM test.dbo.table145    
WHERE CHARINDEX(LOWER(lastName), LOWER('--'||[teacherD])) = 0 

您遇到的问题是,charindex返回0,因为它位于位置0,所以我们在字符串的开头添加了一些不匹配的内容,因此返回的0总是失败的。

我不知道你想为第二部分做什么。

最新更新