2017-01-04 4 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 о курица, т.е. а и О.

Просьба представить материалы о том, как решение может быть достигнуто?

+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 

Для 1-го запроса:

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

А потом для 2-го выхода попробовать ниже алгоритма:

  • , если у вас есть 1 ввода символов используйте substr (название, 2,1)
  • , если у вас есть 2 символа ввода, то используйте substr (name, 3,1)
  • .. обычно: если x - количество вводимых символов, а y - количество ожидаемых символов, попробуйте substr (name, x + 1, у)
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

Выше запрос дает лишь частичный результат. Мне нужно получить первый символ каждого слова в строке.Это означает, что для Пола Аллена - (Первые алфавиты Р, А) Марки - (Первые алфавиты М) Монти Пайтон - (Первые алфавиты М, Р) Лютера Блиссет - (Первые алфавиты L, В) Рокфоре Cantsin - (Первые алфавиты M, C) он должен печатать алфавиты P, A, M, L, B, C. Любые указатели? – Francis

Смежные вопросы