获取sqlite3字符串中每个单词的第一个字符

时间:2017-01-04 09:01:59

标签: sqlite

在sqlite3表中,我们的名称如下所示。

Monty Python
Luther Blissett
Rey maR EsteBaN
Monty Cantsin
Geoffrey Cohen
Karen Eliot
Poor Konrad

我需要一个查询来从数据库中获取字符。

  1. 最初我需要一个查询来获取字符串中每个单词的第一个字母。在上面的例子中,它应该显示M,P,L,B,R,E,C,G,K

  2. 假设用户在上述查询后选择C,那么它应该获取C a ntsin和C o 母鸡的下一个可能的字符,即A和O

  3. 请提供有关解决方案如何到达的任何意见?

1 个答案:

答案 0 :(得分:0)

如果仅计算名字,则下面的解决方案将起作用。

考虑数据:

    sqlite> SELECT name  FROM COMPANY;
    Paul Allen
    Mark
    Monty Python
    Luther Blissett
    Monty Cantsin

第一次查询:

    sqlite> SELECT distinct  substr(name,1,1)  FROM COMPANY;
    P
    M
    L

稍后第二次输出尝试以下算法:

  
      
  • 如果你有1个字符输入,那么使用substr(name,2,1)
  •   
  • 如果您输入了2个字符,请使用substr(name,3,1)
  •   
  • ..通常:如果x是输入的字符数且y是预期的字符输出数,请尝试 substr(name,x + 1,y)
  •   
    sqlite> SELECT distinct  substr(name,2,1)  FROM COMPANY where name like 'M%';
     a
     o


    sqlite> SELECT distinct  substr(name,3,1)  FROM COMPANY where name like 'Ma%';
    r

如果还需要考虑其他单词进行搜索,请将表名替换为子查询,如下所示。

SELECT distinct  substr(name,2,1)  FROM 
(
    select name from company where name like 'A%'  -- counts for first word
    UNION
    select name from company where name like '% A%' -- counts for words that start with space
);

请注意,上述查询只返回第一个单词的字符,但匹配的是所有单词,它会将第一个名称视为获取字符的来源。