在sqlite3表中,我们的名称如下所示。
Monty Python
Luther Blissett
Rey maR EsteBaN
Monty Cantsin
Geoffrey Cohen
Karen Eliot
Poor Konrad
我需要一个查询来从数据库中获取字符。
最初我需要一个查询来获取字符串中每个单词的第一个字母。在上面的例子中,它应该显示M,P,L,B,R,E,C,G,K
假设用户在上述查询后选择C,那么它应该获取C a ntsin和C o 母鸡的下一个可能的字符,即A和O
请提供有关解决方案如何到达的任何意见?
答案 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
);
请注意,上述查询只返回第一个单词的字符,但匹配的是所有单词,它会将第一个名称视为获取字符的来源。