忽略重音SQLite3

Mar*_*los 3 sql sqlite android

如何使用LIKE子句忽略SQLite3上的重音?

PS:这是Android内置SQLite支持.

Der*_*rzu 11

有一个解决方案,它不优雅,但它适用于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%'
Run Code Online (Sandbox Code Playgroud)

或者使用unicode:

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%'
Run Code Online (Sandbox Code Playgroud)

SEARCH_KEY是您希望在列上找到的关键词.

  • 另外,这对性能来说不是很好,但至少是一个解决方案 (2认同)