如何在 MySQL 中的两列中搜索名称?

Uda*_*ati 3 mysql

我想搜索一个名字“Hamed Haddadi”。'Hamed' 是名字,'Haddadi' 是用户的姓氏。当我在名字和姓氏列中单独搜索时,它会显示一条记录。

我的查询是:

SELECT * 
FROM nbaplayermaster 
WHERE firstname LIKE "%Hamed%" OR 
      lastname LIKE "%Haddadi%";
Run Code Online (Sandbox Code Playgroud)

但是每当我在两列中搜索他的名字时,它都会在 MySQL 中显示一个空的结果集。

我的查询是:

SELECT * 
FROM nbaplayermaster 
WHERE firstname LIKE "%Hamed Haddadi%" OR 
      lastname LIKE "%Hamed Haddadi%";
Run Code Online (Sandbox Code Playgroud)

我想在两列中搜索他的全名。

alt*_*elo 8

我怀疑 Hamed 是名字,Haddadi 是姓氏,您可以通过 3 种方式做到这一点;

解决方案1:

按姓名和姓氏拆分查询:

SELECT * 
FROM nbaplayermaster 
WHERE firstname LIKE "%Hamed%" OR 
      lastname LIKE "%Hamed%";
Run Code Online (Sandbox Code Playgroud)

解决方案2:

在名称(空格)之间使用通配符 %

SELECT * 
FROM nbaplayermaster 
WHERE firstname LIKE "%Hamed%Haddadi%" OR 
      lastname LIKE "%Hamed%Haddadi%";
Run Code Online (Sandbox Code Playgroud)

解决方案3:(推荐)

在这 2 列上添加全文索引:

ALTER TABLE nbaplayermaster ADD FULLTEXT KEY `full_name` (`firstname`,`lastname`);
Run Code Online (Sandbox Code Playgroud)

然后使用全文索引搜索

SELECT * FROM nbaplayermaster WHERE MATCH(firstname,lastname) AGAINST ('Hamed Haddadi');
Run Code Online (Sandbox Code Playgroud)