代码之家  ›  专栏  ›  技术社区  ›  min2bro

按字符串排序,中间有空格

  •  0
  • min2bro  · 技术社区  · 8 年前

    我的表列“business”如下所示:

    Michael Kors
    Baltimore Michael Kors
    Charlotte Michael Kors
    Michael Texas
    Kors Dallas
    Michael Kors
    

    我必须在字符串“michael kors”的这个列上应用order by,所以排序结果应该是这样的:

    Michael Kors
    Michael Kors
    Baltimore Michael Kors
    Charlotte Michael Kors
    Kors Dallas
    Michael Texas
    

    如果字符串包含子字符串michael kors,它应该按字母顺序位于顶部。所以在上面的例子中,两行精确匹配在最上面,之后是巴尔的摩,夏洛特是第三行和第四行,按字母顺序排列。不担心其他不包含确切单词michael kors的字符串

    我试过用 Substring_Index 但看起来它不适用于带有空格的子字符串。感谢所有帮助。

    3 回复  |  直到 8 年前
        1
  •  3
  •   slaakso    8 年前

    order by 
      locate('Michael Kors', business)=1 desc, 
      locate('Michael Kors', business)>0 desc, 
      business
    

        2
  •  1
  •   Nipun Thennakoon    8 年前

    order by FIELD(business, 'Michael Kors’)
    
        3
  •  1
  •   trincot    8 年前

    order by

    select   * 
    from     mytable
    order by (business = 'Michael Kors') desc,
             (business like '%Michael Kors%') desc,
             (business like '%Kors%') desc,
             (business like '%Michael%') desc,
             business