Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Sqlite запрос со сравнением строки с последними 5ю символами - Программирование Android

13.05.2015, 16:02. Просмотров 479. Ответов 10
Метки нет (Все метки)

Гуру SQLite, помогите!

Есть таблица в которой одно из строковых полей выглядит так:

123454-80000
984230-80000
849037-80000
489026-80000
489026-90000
489026-23423

мне надо отобрать только те что заканчиваются на "80000"

Хотя-бы в какую сторону копать? Like? Copy? Left? REGEXP?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2015, 16:02     Sqlite запрос со сравнением строки с последними 5ю символами
Посмотрите здесь:
SQLite запрос Android
Android SQLite запрос
Android SQLite запрос
SQLite и древовидный запрос Android
Android Некорректно выполняется запрос к SQLite
SQLite запрос для списка с подчиненными Android
Простейший запрос к SQLite (или схожу сума) Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
13.05.2015, 16:19     Sqlite запрос со сравнением строки с последними 5ю символами #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Tester64,
MySQL
1
...WHERE name LIKE '%80000'
не?
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
13.05.2015, 16:32  [ТС]     Sqlite запрос со сравнением строки с последними 5ю символами #3
Сработало! Спасибо!

А можно сделать выборку так чтобы из того-же списка получить только с "-80" на определенной позиции от одного из концов строки?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
13.05.2015, 16:45     Sqlite запрос со сравнением строки с последними 5ю символами #4
Цитата Сообщение от Tester64 Посмотреть сообщение
на определенной позиции от одного из концов строки?
c подчеркиванием наверн можно поэкспериментировать.
MySQL
1
WHERE name LIKE '%80___'
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
13.05.2015, 16:58  [ТС]     Sqlite запрос со сравнением строки с последними 5ю символами #5
Спасибо!
И последнее, можно ли сделать выборку с игнорированием пробелов и "-"?
типа "123454-80000" найти по "5480000"?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
13.05.2015, 17:25     Sqlite запрос со сравнением строки с последними 5ю символами #6
Tester64,
Цитата Сообщение от Tester64 Посмотреть сообщение
типа "123454-80000" найти по "5480000"?
конкретно для этого случая можн так: "%54_80000"
а по игнору чет ничего не встретил: "sqlite like ignore single character"

Добавлено через 7 минут
Tester64, а такое прокатывает в sqlite?
"%54[ -]80000" - типа между ними могут быть только пробелы и тире
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
13.05.2015, 18:54     Sqlite запрос со сравнением строки с последними 5ю символами #7
Tester64, не помню, можно ли использовать в Андроидной SQLite хранимые функции. Если нет, то можно попробовать добавить дополнительное поле, в котором хранить данные без пробелов и минусов.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
13.05.2015, 21:14  [ТС]     Sqlite запрос со сравнением строки с последними 5ю символами #8
вопрос решил средствами самого андроид апи... сам не знаю как у них начинка устроена...

Детально изучаю Котакт-телефоны-АПИ. Там многое на записи в базу работает. Можно записать телефоны уровня +38(050)123-4567. Сравнивать в таком режиме с образцом - это ад. Учитывая что база не моя - поля добавлять не могу. Я к ней вообще через кривое апи только добираюсь...
Но нашел способ (встроенный) который находит сходство даже между
+38(050)123-4567 = 123-4567
+38(050)123-4567 = 0501234567
+38(050)123-4567 = 8050123-456-7
+38(050)123-4567 = +38-050-1234567
(и еще десяток коомбинаций опробовал)

Раньше хотел свою систему поиска кода по номеру телефона писать... Ступенчато - до 7 знаков, до 10, без пробелов и "-", без скобок... А это похоже уже как-то встроено...
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
14.05.2015, 08:46     Sqlite запрос со сравнением строки с последними 5ю символами #9
Tester64,
Цитата Сообщение от Tester64 Посмотреть сообщение
А это похоже уже как-то встроено
да кстати, есть же телефоны в которых при наборе номера из контактов предоставляется наиболее похожий номер, вот это по всей видимости Вы и накопали
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
14.05.2015, 09:15     Sqlite запрос со сравнением строки с последними 5ю символами #10
Цитата Сообщение от Tester64 Посмотреть сообщение
вопрос решил средствами самого андроид апи
ну, и кинул бы сюда
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2015, 10:09     Sqlite запрос со сравнением строки с последними 5ю символами
Еще ссылки по теме:
SQLite добавление строки Android
Android Обновление строки в sqlite
Android Удаление строки из БД Sqlite
SQLite вывод максимального значения строки Android
Android SQLite запретить удаление строки, если есть ссылки на нее

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
14.05.2015, 10:09  [ТС]     Sqlite запрос со сравнением строки с последними 5ю символами #11
Цитата Сообщение от androbro Посмотреть сообщение
вот это по всей видимости Вы и накопали
Цитата Сообщение от Armagedo Посмотреть сообщение
ну, и кинул бы сюда
Я не знаю как это реализовано средствами запросов!
Могу выдать функцию запроса к контакт-апи, но это не особо похоже на работу с базой. Там целый интерфейс отвечает за "похожесть"... Я его нарыл и протестил на 20-30 номерах (насколько фантазии хватило "попортить" номера)

Java
1
2
3
4
5
6
7
Uri uri1 = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phone_number));
Cursor cs= context.getContentResolver().query(uri1, new String[]{"_id"}, null, null, null);
long res0 = -1;
cs.getString(cs.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
if (cs.moveToFirst()) res0 = cs.getLong(0);
cs.close();
return res0;
Как видите это не похоже на использование LIKE в запросах... я понятия не имею как это сделано "внутри" запроса... Похоже есть некая функция "нормирования" номеров. Возможно они даже встроили ее недокументированной функцией в сборку SQLite...

главное - заработало! Вопрос снимаю...
Yandex
Объявления
14.05.2015, 10:09     Sqlite запрос со сравнением строки с последними 5ю символами
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru