我有一张名字和姓氏的表格
firstname lastname
--------- ---------
Joe Robertson
Sally Robert
Jim Green
Sandra Jordan
我正在尝试根据包含全名的输入来搜索此表。例如:
input: Joe Robert
我考虑过使用
SELECT * FROM tablename WHERE firstname LIKE
但是该表单独存储名字和姓氏,所以我不确定在这种情况下如何进行搜索
最佳答案
在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%'
关于database - 同时搜索2个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2896083/