2012-12-11 2 views
6

Su Android Jellybean 4.1 è possibile sfuggire a un carattere jolly LIKE e continuare a utilizzare l'indice?SQLite Android LIKE escape jolly

Usa:

where field like 'xyz\_abc' 

in contrapposizione a: jolly

where field like 'xyz_abc' 

Does fuga lavorare su Android? E userà ancora l'indice se il carattere jolly è sfuggito?

Quello che sto facendo attualmente è:

where field like 'xyz_abc' and lower(field) = lower('xyz_abc') 

Quale è terribilmente inefficiente a causa del carattere jolly.

Grazie

+0

http://stackoverflow.com/questions/9076561/android-sqlitedatabase-query-with-like dai uno sguardo là ti aiuterà probabilmente! – Pavlos

+0

Se non vuoi '_' come carattere jolly allora 'campo come' xyz_abc'' dovrebbe essere' field = 'xyz_abc''. 'LIKE' non è utile senza almeno un carattere jolly. – Sam

+0

Grazie, ma la colonna è insensibile al maiuscolo/minuscolo. I dati di origine potrebbero essere comunque, ad esempio, 'Xyz_abc' o 'xyz_Abc', ma nella colonna sarà sempre presente UN solo inferiore ('XyZ_AbC'). Sto cercando di evitare di scrivere una patch release per modificare il database per convertire tutto in minuscolo. –

risposta

16

È necessario utilizzare la clausola ESCAPE:

where field like 'xyz\_abc' escape '\' 

Vedere la sezione The LIKE and GLOB operators nella documentazione SQLite.