Php 当精确匹配可用时,对MySQL表执行部分搜索
我正在从PHP脚本运行以下SQL语句:Php 当精确匹配可用时,对MySQL表执行部分搜索,php,mysql,select,match,Php,Mysql,Select,Match,我正在从PHP脚本运行以下SQL语句: SELECT PHONE, COALESCE(PREFERREDNAME, POPULARNAME) FROM distilled_contacts WHERE PHONE LIKE :phone LIMIT 6 很明显,该语句返回与所讨论表的前6个匹配项。我绑定到:phone变量的值如下所示: $search = '%'.$search.'%'; 其中,$search可以是任何数字字符串。通配符确保搜索(例如918)将返回PHONE字段包含918的每
SELECT PHONE, COALESCE(PREFERREDNAME, POPULARNAME) FROM distilled_contacts WHERE PHONE LIKE :phone LIMIT 6
很明显,该语句返回与所讨论表的前6个匹配项。我绑定到:phone
变量的值如下所示:
$search = '%'.$search.'%';
其中,$search
可以是任何数字字符串。通配符确保搜索(例如918
)将返回PHONE
字段包含918
的每条记录:
我的问题是,如果确实存在一个值与搜索字符串完全匹配的条目,则会发生什么情况,在本例中为
918
(上面列表中的第4项)。因为有一个限制6
,所以只会检索前6个条目,其中可能包含也可能不包含精确匹配的条目。如果有记录可用,是否有办法确保结果始终包含与结果列表完全匹配的记录?您可以使用order by来确保完全匹配始终位于结果列表的顶部:
ORDER BY CASE WHEN PHONE = :phone THEN 1 ELSE 2 END
使用$search='.$search.%'
将显示与起始值匹配的结果