gpt4 book ai didi

php - 是否可以在 mysql 或 PHP 或 CODEIGNITER 中搜索显示多个可能结果的多个单词

转载 作者:可可西里 更新时间:2023-11-01 07:47:11 26 4
gpt4 key购买 nike

我有sql表

员工表

ID firstname  lastname      bandname
------------------------------------
1 John Lennon Beatles
2 Paul Mccartney Beatles
3 Ringo Starr Beatles
4 George Harrison Beatles

现在如果我搜索“George Mccartney”,结果应该是 ID 为 4 和 2 的行

或者如果搜索“1 Paul Starr”,结果应该是包含这三个词的 3 行。

最佳答案

sqlFiddle example

SET @search = '1 Paul Starr';

SELECT *
FROM employee
WHERE @search LIKE CONCAT('%',id,'%')
OR @search LIKE CONCAT('%',firstname,'%')
OR @search LIKE CONCAT('%',lastname,'%');

将@search 替换为您的 PHP 代码,因为我不熟悉 PHP。

更新的答案:允许搜索子字符串以进行如下搜索:

“Geor”返回 1 行“George”
“Geor Pau”返回两行“George”和“Paul”
sqlFiddle example

SELECT *
FROM employee
WHERE
id LIKE CONCAT('%',SUBSTRING_INDEX(@search,' ',1),'%')
OR id LIKE CONCAT('%',SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',2),' ',-1),'%')
OR id LIKE CONCAT('%',SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',3),' ',-1),'%')
OR firstname LIKE CONCAT('%',SUBSTRING_INDEX(@search,' ',1),'%')
OR firstname LIKE CONCAT('%',SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',2),' ',-1),'%')
OR firstname LIKE CONCAT('%',SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',3),' ',-1),'%')
OR lastname LIKE CONCAT('%',SUBSTRING_INDEX(@search,' ',1),'%')
OR lastname LIKE CONCAT('%',SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',2),' ',-1),'%')
OR lastname LIKE CONCAT('%',SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',3),' ',-1),'%')
;

或者如果您更喜欢下面使用 LOCATE 做同样的事情(更短的查询)
sqlFiddle example

SELECT *
FROM employee
WHERE
LOCATE(SUBSTRING_INDEX(@search,' ',1) ,CONCAT(id,firstname,lastname))>0
OR LOCATE(SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',2),' ',-1),CONCAT(id,firstname,lastname))>0
OR LOCATE(SUBSTRING_INDEX(SUBSTRING_INDEX(@search,' ',3),' ',-1),CONCAT(id,firstname,lastname))>0
;

关于php - 是否可以在 mysql 或 PHP 或 CODEIGNITER 中搜索显示多个可能结果的多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com