Запрос Sqlite, чтобы получить список следующих доступных символов после соответствующего ключевого слова поиска - PullRequest
0 голосов
/ 27 февраля 2019

Как запросить базу данных sqlite, чтобы получить список следующих доступных символов после ключевого слова поиска в строковом поле.например, если ключевое слово поиска - 'и'

, и пусть строки представляют собой список имен, таких как:

  1. И y Xyz
  2. А р ew Xyz
  3. Xyz А o n
  4. Xyz Mirand a

тогда я должен получить символы [y, r, o, a].

Я пробовал запрос с substr (names, 1,1) , но substr необходимо указать начальный индекс, который будет различным в каждой строке.Можно ли получить эти символы с помощью sqlite-запроса?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете использовать функцию instr , чтобы определить начало подстроки, например: -

SELECT *, substr(names,instr(lower(names),'and') + length('and'),1) AS onechar
FROM mytable WHERE names LIKE ('%and%');

Рабочий пример: -

DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (names TEXT);
INSERT INTO mytable VALUES('Andy Xyz'),('Andrew Xyz'),
('Xyz Andon'),('Xyz Miranda');
SELECT *, substr(names,instr(lower(names),'and') + length('and'),1) AS onechar FROM mytable WHERE names LIKE ('%and%');

В результате: -

enter image description here

согласно ожидаемым результатам.

0 голосов
/ 27 февраля 2019

Вам нужно substr() и instr():

select 
substr(names, instr(lower(names), lower('and')) + length('and'), 1) nextchar 
from tablename
where 
  names like '%' || 'and' || '_%'

См. Демоверсию Вы можете заменить 'and' на любую строку, которую пожелаете в приведенном выше запросе.

...