在一个查询

时间:2017-05-16 17:46:09

标签: sqlite

假设我有这样的数据:

Lena
Lera
Elena
Mark
Allen                 
Paul   

当用户输入' le'我需要回来

  1. 按首字母查找字词

  2. 之后应该跟随包含' le'字符(全文搜索)

  3. 所以它应该返回:

    NA 的 RA 甲的文件Ñ È的文件 NA

    类似的东西(这个例子没有返回任何东西):

    SELECT name FROM table WHERE name LIKE 'le%' AND like '%le%' ORDER BY name ASC
    

    谢谢。

1 个答案:

答案 0 :(得分:2)

在事实证明UNION混合了子选择的顺序后,我们将尝试别的东西。您可以使用自定义ORDER BY进行尝试。首先是它是以搜索词开头,还是按名称开头。

  SELECT name
    FROM table
   WHERE UPPER(name) LIKE UPPER('%le%')
ORDER BY (CASE WHEN UPPER(name) LIKE UPPER('le%') THEN 1 ELSE 2 END),
         name ASC  

将字符串与UPPER进行比较有助于忽略大小写。但是UPPER显然只支持ASCII,请阅读this article以获取有关该主题的更多信息。它还包含在比较字符串时忽略大小写的其他方法。