Поиск любой комбинации строки в базе данных sqlite

#java #android #sqlite

#java #Android #sqlite

Вопрос:

Я пытаюсь создать приложение для Android, которое ищет в моей базе данных любую комбинацию символов, которые я ввел в элемент управления edittext. Например, у меня есть слово RAW и HOW и HEAD (среди множества других слов и чисел) в моей базе данных, и если я добавлю символы «HOWRADE», я хочу получить доступ как к RAW, так и к HEAD, поскольку в строке ничего не существуетЯ ввел edittext. Кто-нибудь знает, можно ли это сделать с помощью sql-запроса? Я мог бы сделать это сложным способом и сделать запрос для каждого символа в строке, но это кажется слишком сложным. Был бы очень признателен за помощь в этом, так как я больше не могу думать прямо 🙂

Ответ №1:

Конечно, у вас есть предложение WHERE, и вы можете использовать символы LIKE и wild, такие как %, чтобы определить, что вы ищете буквы в контексте.

Создайте базовый SQL в виде строки и завершите его с помощью «WHERE «, затем выполните итерацию по буквам и добавьте текст ТИПА «%» char «%» Убедитесь, что вы вставили OR (ы) в нужные места в SQL, а затем выполните инструкцию.

При ее создании вы можете захотеть записать готовую строку, чтобы увидеть, что вам нужно изменить, чтобы она работала.

Ссылка: предложение LIKE

Комментарии:

1. Спасибо. Я думаю, это единственный «простой» способ сделать это. Запрос становится очень длинным, но выполняется довольно быстро. Я уверен, что идея растрового изображения лучше, но у меня нет времени на ее дальнейшее изучение. Всем спасибо за помощь!

Ответ №2:

Насколько мне известно, нет, по крайней мере, если вы просто сохраняете список слов в виде столбца.

Даже если бы вы могли, я не уверен, что выполнение этого через SQL было бы лучшим способом — возможно, рассмотрите какое-то представление символов битовой карты, trie и т. Д. (Или просто сделайте запросы.)

Комментарии:

1. 1 за идею растрового изображения. преобразуйте каждое слово в побитовый хэш, а затем используйте его для запроса.

2. (Как говорит Пироданте, вы могли бы, если, конечно, создать строку подстановочных лайков; я бы проверил производительность, если это вызывает беспокойство.)