2017-01-04 154 views
0

在sqlite3表中我們有如下所示的名稱。獲取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 Ø母雞即A型和O

請提供解決方案如何能夠到達任何投入?

+0

如果對數據庫有不同的查詢,那很好。任何解決方案 – Francis

+0

您確定,您的問題最好使用多個數據庫查詢解決?作爲替代方案,請考慮查詢數據庫一次並編寫提取信息的代碼。 –

+0

使用[substr()](http://www.sqlite.org/lang_corefunc.html#substr)和[LIKE](http://www.sqlite.org/lang_expr.html#like)。 –

回答

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 

,後來換2個輸出試試下面的算法:

  • ,如果你有1級字符的輸入,然後使用substr(name,2,1)
  • 如果您有2個字符輸入,然後使用substr(名稱,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 
); 

請注意,上面的查詢將只返回第一個字的人物,雖然這場比賽是所有的話,將考慮名字爲源獲取字符。

+0

該查詢僅給出部分結果。我需要字符串中每項工作的第一個字符。這意味着對於 – Francis

+0

以上查詢只給出部分結果。我需要獲取字符串中每個單詞的第一個字符。這意味着用於 艾倫 - (初字母表P,A) 馬克 - (初字母表M) 巨蟒 - (初字母表M,P) 盧瑟·布利塞特 - (初字母表L,B) 蒙蒂Cantsin - (第一個字母是M,C) 它應該打印字母P,A,M,L,B,C。任何指針? – Francis

相關問題