#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. (Как говорит Пироданте, вы могли бы, если, конечно, создать строку подстановочных лайков; я бы проверил производительность, если это вызывает беспокойство.)