语句如下:
select name from test where name like '%测试%'表数据如下:ID    Name
1     测试1
2     测试
我想要的结果是 按搜索词的匹配度最高的记录排在最前面,即:
2  测试
1  测试1请问 Mysql 中 是否有相关的参数可以设置?如果是 union all 就算了,程序处理的也就算了

解决方案 »

  1.   

    select name from test where instr(concat(',',name,','),',测试,')>0
    order by length(replace(Name,'测试',''))
      

  2.   

    SELECT `name` FROM tty3 WHERE `name` LIKE '%测试%'
    ORDER BY LENGTH(REPLACE(NAME,'测试',''))
      

  3.   

    to wwwwa:
    很感谢,你的方法我也想到过,但是出于对效率的担心,暂时还未使用,到这里发帖是想看看有没有其他的思路
      

  4.   

    or
    SELECT * FROM tty3 ORDER BY INSTR(CONCAT(',',`name`,','),',测试,') desc
    对字符操作速度不会快
      

  5.   

    or
    SELECT * FROM tty3 
    ORDER BY CONCAT(',',`name`,',') REGEXP ',测试,' desc
      

  6.   

    or
    SELECT * FROM tty3 
    ORDER BY FIND_IN_SET('测试',`name`) desc
      

  7.   

    关键是你的相似度是只什么?
    下面的数据你准备如何排序?
    ID    Name
    1     测试1
    2     测试
    3     测试1234
    4     12测试
    5     测试12
    6     14322r3测试134153
    7     123测试123
      

  8.   


    同问,补充
    测试 VS 测试测试 VS 测试测试测试
      

  9.   

    LZ可能只是给了个例子,他有这样的需求,但MySQL用到like就很慢,我也在头痛,等牛人
      

  10.   

    有沒有考慮過, 如果排序或查詢 常使用的話, 可將 文字 與 數字分開欄位存放, 然後再 order by 數字欄位.
    如:  ID Name OrdreBy
    1 测试1  1
    2 测试   0