我有一个文本域,它接受全名示例: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' + '%'

你只需要决定你到底想要什么样的行为,然后努力完成。

07-24 13:03