T-SQL 2012 charindex, сравнивающий несколько строк, не совпадает - PullRequest
0 голосов
/ 27 декабря 2018

В базе данных 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  

Пожалуйста, не могли бы вы показать мне несколько SQL-запросов о том, как решить часть 1 и часть 2?

1 Ответ

0 голосов
/ 27 декабря 2018

Чтобы решить первую часть, сделайте следующее:

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

Проблема в том, что charindex возвращал 0, потому что он находился в местоположении 0, поэтому мы добавляем в начало строки что-то, что не будетсовпадение, поэтому возвращаемое значение 0 всегда будет ошибкой.

Я не знаю, что вы хотите сделать для второй части.

...