doulubashang6936 2015-06-02 21:59
浏览 46
已采纳

当完全匹配可用时,在MySQL表上执行部分搜索

I am running the following SQL statement from a PHP script:

SELECT PHONE, COALESCE(PREFERREDNAME, POPULARNAME) FROM distilled_contacts WHERE PHONE LIKE :phone LIMIT 6

As obvious, the statement returns the first 6 matches against the table in question. The value I'm binding to the :phone variable is goes something like this:

$search = '%'.$search.'%';

Where, $search could be any string of numerals. The wildcard characters ensure that a search on, say 918, would return every record where the PHONE field contains 918:

  1. 9180078961
  2. 9879189872
  3. 0098976918
  4. 918
  5. ...

My problem is what happens if there does exist an entry with the value that matches the search string exactly, in this case 918 (the 4th item in the list above). Since there's a LIMIT 6, only the first 6 entries would be retrieved which may or may not contain the one with the exact match. Is there a way to ensure the results always contain the record with the exact match, on top of the resulting list, should one be available?

  • 写回答

2条回答 默认 最新

  • doujujian0052 2015-06-02 22:06
    关注

    You could use an order by to ensure the exact match is always on top:

    ORDER BY CASE WHEN PHONE = :phone THEN 1 ELSE 2 END  
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请问如何在openpcdet上对KITTI数据集的测试集进行结果评估?
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错