Вы проверяете наличие любой строки, включающей все из michael peter johnson
.
Вам нужно три отдельных утверждения, с разными сравнениями ...
WHERE
firstName Like '%michael%'
or middleName Like '%peter%'
or lastName Like '%johnson%"
Вы могли бы изменить логику ...
WHERE
'michael peter johnson' LIKE '%' + firstName +'%'
or 'michael peter johnson' LIKE '%' + middleName +'%'
or 'michael peter johnson' LIKE '%' + lastName +'%'
Вы также привели пример, где поиск для 'son'
. Ваш существующий код будет работать для этого. Это просто «проблема», когда вы сравниваете каждую отдельную часть имени с параметром, который имеет все имя.
Так, может быть, вы хотите обе версии вместе?
WHERE
'michael peter johnson' LIKE '%' + firstName +'%'
or 'michael peter johnson' LIKE '%' + middleName +'%'
or 'michael peter johnson' LIKE '%' + lastName +'%'
or firstName LIKE '%' + 'michael peter johnson' + '%'
or middelName LIKE '%' + 'michael peter johnson' + '%'
or lastName LIKE '%' + 'michael peter johnson' + '%'
Вам просто нужно решить, какое именно поведение вы хотите, и затем проработать его.