我从PHP脚本运行以下SQL语句:
SELECT PHONE, COALESCE(PREFERREDNAME, POPULARNAME) FROM distilled_contacts WHERE PHONE LIKE :phone LIMIT 6
很明显,该语句返回前面有关该表的前6个匹配项。我与:phone
变量绑定的值是这样的:
$search = '%'.$search.'%';
其中,$search
可以是任何数字串。通配符确保搜索918
,将返回PHONE
字段包含918
的每条记录:
我的问题是如果确实存在一个条目,其值与搜索字符串完全匹配,在本例中为918
(上面列表中的第4项)。由于有LIMIT 6
,因此只会检索前6个条目,这些条目可能包含也可能不包含具有完全匹配的条目。有没有办法确保结果始终包含具有完全匹配的记录,如果有结果列表,是否可用?
答案 0 :(得分:1)
您可以使用订单来确保完全匹配始终位于最前面:
ORDER BY CASE WHEN PHONE = :phone THEN 1 ELSE 2 END
答案 1 :(得分:0)
使用$search = ''.$search.'%'
将显示与起始值匹配的结果。