我有一个文本域,它接受全名示例:michael peter johnson
在我的表中,有三列firstName、middlename和lastname
我已编写此查询,但它返回空
SELECT firstName,middleName,lastName
FROM staff
WHERE firstName LIKE "%michael peter johnson%"
OR middleName LIKE "%michael peter johnson%"
OR lastName LIKE "%michael peter johnson%"
如果用户键入son,则应显示michael peter johnson,因为son包含在johnson中。
谢谢
我的桌子:firstName有(michael)middleName有(peter)lastName(johnson)
最佳答案
您正在检查包含所有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' + '%'
你只需要决定你到底想要什么样的行为,然后努力完成。