Php 当精确匹配可用时,对MySQL表执行部分搜索

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的每

我正在从PHP脚本运行以下SQL语句:

SELECT PHONE, COALESCE(PREFERREDNAME, POPULARNAME) FROM distilled_contacts WHERE PHONE LIKE :phone LIMIT 6
很明显,该语句返回与所讨论表的前6个匹配项。我绑定到
:phone
变量的值如下所示:

$search = '%'.$search.'%';
其中,
$search
可以是任何数字字符串。通配符确保搜索(例如
918
)将返回
PHONE
字段包含
918
的每条记录:

  • 9180078961
  • 9879189872
  • 0098976918
  • 918

  • 我的问题是,如果确实存在一个值与搜索字符串完全匹配的条目,则会发生什么情况,在本例中为
    918
    (上面列表中的第4项)。因为有一个
    限制6
    ,所以只会检索前6个条目,其中可能包含也可能不包含精确匹配的条目。如果有记录可用,是否有办法确保结果始终包含与结果列表完全匹配的记录?

    您可以使用order by来确保完全匹配始终位于结果列表的顶部:

    ORDER BY CASE WHEN PHONE = :phone THEN 1 ELSE 2 END  
    
    使用
    $search='.$search.%'
    将显示与起始值匹配的结果