2014-01-31 5 views
3

Я хочу сделать запрос в поле, в котором нет не числовых символов.Android. Sqlite. удалить все не numeric

Cursor c=context.getContentResolver().query(Uri.parse("content://mms-sms/canonical-addresses/"), new String[] {"address","_id"}, "replace("+"address"+", '[^0-9]','')"+" LIKE ?", new String[] {"%"+subaddress+"%"}, null); 

Но когда я искать в числовом формате DB +7 (888) 888-88-88 по подадресу 8888888, курсор не moveToNext

Что не так?

+1

В 'replace' нет поддержки регулярных выражений. – laalto

+0

и что это? - http://stackoverflow.com/questions/17004281/hyphens-are-an-issue-in-getting-contact-details-with-a-partial-phone-number – user1755546

ответ

3

Нет поддержки регулярных выражений в replace и Android sqlite не обеспечивает реализацию функции regex.

Ваш лучший вариант - добавить еще один столбец, который вы используете для поиска, и где значения лишены несущественных символов. Вы можете использовать свое регулярное выражение для кода Java.

Если это не вариант, и набор специальных символов мало, вы можете использовать вложенные Заменяет:

replace(replace(replace(replace(address, '+', ''), '-', ''), '(', ''), ')', '') 

Но как вы можете видеть это становится громоздким.

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