2010-09-08 13 views

Respuesta

33

Yepper, use Me gusta. Select id from sometable where name like '%omm%' devolvería cualquier fila que tuviera 'omm' en cualquier lugar de la columna de nombre.

+0

, ¿qué pasa si la cadena realmente contiene el carácter "%"? ¿Qué hace SQLite en ese caso? –

+4

Hay una palabra clave ESCAPE que le permite definir un carácter de escape para que pueda consultar en% o _. Ver: http://www.sqlite.org/lang_expr.html Así que harías algo así como "seleccionar id de mytable donde nombre como '% somename \ %%' escape '\' – GrandmasterB

+1

advertencia: esto no distingue entre mayúsculas y minúsculas. – Bren

12

Usted puede uso LIKE, pero se hace muy lento si el patrón está buscando comienza con '%' - es decir, si la subcadena que está buscando no está necesariamente en el inicio de la campo.

Si necesita hacer tales búsquedas, considere usar FTS3, lo que hace que la búsqueda de texto completo sea considerablemente más eficiente.

+0

Interesante, ¿hay un montón de sobrecarga para usar? FTS3? Se puede usar con la API de SQLite en C? –

+0

@Tommy: no estoy seguro de qué gastos generales calificarían como mucho desde su punto de vista. Sí, se puede usar desde la API de C. –

+1

La extensión FTS está incluida en la distribución SQLite. Solo necesita leer los documentos y encenderlos en el momento de la compilación. Tenga en cuenta que construirá un índice de tamaño no despreciable con el que funciona su magia ... – RBerteig

Cuestiones relacionadas