在 MySQL WHERE 子句中连接列
在包含名字和姓氏列的数据库表中,使用单个执行搜索查询搜索词可能具有挑战性。使用 LIKE 运算符单独搜索每一列可以产生广泛的结果,尤其是在使用单字搜索词时。
要缩小搜索结果范围,您可以使用 CONCAT() 函数连接第一个和最后一个名称到单个字符串中。然后可以使用 LIKE 运算符将该字符串与搜索词进行比较。但是,问题中提供的示例查询:
select * from table where first_name like '%$search_term%' or last_name like '%$search_term%' or concat_ws(' ',first_name,last_name) like '%$search_term%';
似乎没有产生所需的结果。
查询的简化版本,如答案中所建议的:
select * from table where concat_ws(' ',first_name,last_name) like '%$search_term%';
应该达到在单个查询中搜索全名的目标。 CONCAT() 函数将名字和姓氏组合成一个字符串,然后使用 LIKE 运算符将其与搜索词进行比较。此方法应该提供更精确的搜索结果。
要对原始查询进行故障排除,提供未按预期工作的名称和搜索词的示例会很有帮助。问题可能出在查询或表数据的其他地方。
以上是如何使用 CONCAT() 在 MySQL 中高效搜索全名?的详细内容。更多信息请关注PHP中文网其他相关文章!