我有一个名字和姓氏表
firstname lastname
--------- ---------
Joe Robertson
Sally Robert
Jim Green
Sandra Jordan
我正在尝试根据包含全名的输入搜索此表。例如:
input: Joe Robert
我考虑过使用
SELECT * FROM tablename WHERE firstname LIKE
但是这个表分别存储了名字和姓氏,所以我不知道在这种情况下如何进行搜索
答案 0 :(得分:4)
在MyISAM
:
SELECT *
FROM mytable
WHERE MATCH(firstname, lastname) AGAINST ("Joe* Robert*" IN BOOLEAN MODE);
如果您创建FULLTEXT
索引,这将运行得更快:
CREATE FULLTEXT INDEX ON mytable (firstname, lastname)
要使查询能够搜索短名称(例如您的Joe
),您需要在创建索引之前将变量@@ft_min_word_len
设置为1
。
在InnoDB
中,您需要拆分搜索字符串:
SELECT *
FROM mytable
WHERE firstname LIKE 'Joe%'
AND lastname LIKE 'Robert%'
答案 1 :(得分:2)
Quassnoi方法的替代方案:
SELECT *
FROM mytable
WHERE CONCAT(firstname, " ", lastname) = "Joe Robert"