¿Cuál es la forma más eficiente de buscar una cadena secundaria en SQLite?¿Cómo buscar una subcadena en SQLite?
Estoy mirando al operador LIKE.
¿Tengo la idea correcta? ¿Te ha funcionado bien?
http://www.sqlite.org/lang_expr.html
gracias.
¿Cuál es la forma más eficiente de buscar una cadena secundaria en SQLite?¿Cómo buscar una subcadena en SQLite?
Estoy mirando al operador LIKE.
¿Tengo la idea correcta? ¿Te ha funcionado bien?
http://www.sqlite.org/lang_expr.html
gracias.
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.
, ¿qué pasa si la cadena realmente contiene el carácter "%"? ¿Qué hace SQLite en ese caso? –
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
advertencia: esto no distingue entre mayúsculas y minúsculas. – Bren
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.
Interesante, ¿hay un montón de sobrecarga para usar? FTS3? Se puede usar con la API de SQLite en C? –
@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. –
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
¿Por qué está etiquetado con C? – pmg
@pmg: Usando la API de SQLite en C. –