Как сделать SELECT с предложением LIKE, игнорируя акценты на SQLite3?Игнорировать акценты SQLite3
PS: Это встроенная поддержка SQLite для Android.
Как сделать SELECT с предложением LIKE, игнорируя акценты на SQLite3?Игнорировать акценты SQLite3
PS: Это встроенная поддержка SQLite для Android.
Был аналогичный вопрос here.
Они сказали, что на Android это невозможно, но есть обходной путь с дополнительным нормализованным столбцом.
Существует решение, но оно не очень элегантно, но работает на Android.
Функция REPLACE может заменить символ с акцентом на обычный символ. Пример:
SELECT YOUR_COLUMN FROM YOUR_TABLE WHERE replace(replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(lower(YOUR_COLUMN), 'á','a'), 'ã','a'), 'â','a'), 'é','e'), 'ê','e'), 'í','i'),
'ó','o') ,'õ','o') ,'ô','o'),'ú','u'), 'ç','c') LIKE 'SEARCH_KEY%'
Или используйте юникода:
SELECT YOUR_COLUMN FROM YOUR_TABLE WHERE replace(replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(lower(YOUR_COLUMN), '\u00E1','a'), '\u00E3','a'), '\u00E2','a'), '\u00E9','e'), '\u00EA','e'), '\u00ED','i'),
'\u00F3','o') ,'\u00F5','o') ,'\u00F4' ,'o'),'\u00FA','u'), '\u00E7' ,'c') LIKE 'SEARCH_KEY%'
Где SEARCH_KEY это ключевое слово, которое вы хотите найти на колонке.
Кроме того, это не очень хорошо для производительности, но по крайней мере является решением –
@MarcosVasconcelos Да, это не очень хорошо. Но это возможное решение. – Derzu