在 MySQL 数据库中搜索全名或名字或姓氏,名字和姓氏在单独的列中

新手上路,请多包涵

我正在使用一个现有的数据库,该数据库的名字和姓氏在数据库中是分开的。我需要创建一个函数来接受一个搜索输入并返回结果。说我的数据库有这样的结构……

 nameFirst nameLast
Joe       Smith
Joe       Jones
Joe       Brown

我怎么能使用 MySql 进行搜索输入“Joe Smith”并得到他的行呢?但是,如果我在搜索字段中只输入“Joe”,是否会全部返回?我需要用空格分解字符串吗?谢谢!

原文由 G.Thompson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 468
2 个回答
SELECT *
FROM table
WHERE CONCAT( nameFirst,  ' ', nameLast ) LIKE  '%Joe%'

请务必清理任何用户提交的参数,例如“Joe”

原文由 csi 发布,翻译遵循 CC BY-SA 3.0 许可协议

SELECT * FROM table WHERE CONCAT(nameFirst, ' ', nameLast) LIKE 'Joe%';

如果您确定您的搜索输入以“Joe”开头以过滤更多内容,我建议您使用它。

以我的拙见,在很多情况下我们不知道搜索输入是名字还是姓氏,所以我建议使用这个:

 SELECT * FROM table WHERE CONCAT(nameFirst,  ' ', nameLast) LIKE  'SEARCH_INPUT%' OR CONCAT(nameLast,  ' ', nameFirst) LIKE 'SEARCH_INPUT%';

原文由 Stefano Borzì 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏