¿Cómo lograr límite de palabras en Sqlite Android?

Me gustaría lograr lo siguiente (una búsqueda de texto completo),

SELECT * FROM tablename where columnname REGEXP '[[:<:]]some string[[:>:]]' 

Cuando estoy interesado en sólo cadenas exactas (no sólo palabras) de una columna de texto completo.

He estado usando el SQL exacto arriba en MySQL y ahora migrar la mayor parte del código a las aplicaciones de Android.

Pero he estado buscando en varios puestos donde se menciona que REGEXP no es compatible con Android Sqlite (por ejemplo: link1 , link2 , link3 ).

¿Hay alguna forma de habilitar REGEXP en Android?

Si no hay alternativas para el SQL anterior?

Gracias,

EDIT: Actualmente estoy recibiendo la siguiente excepción al usar REGEXP en Android,

 android.database.sqlite.SQLiteException: no such function: REGEXP (code 1):... 

Entiendo que podemos hacer uso de GLOB y LIKE (o puede ser incluso MATCH). ¿Cómo se puede columnname REGEXP '[[:<:]]somestring[[:>:]]' para usar GLOB y / o LIKE y / o MATCH ?

SOLUCIÓN 1 : Con @cybersam la ayuda que sigue es lo que estoy usando (después de algunas modificaciones)

 SELECT * FROM tablename where (columnname GLOB '*some string*' OR columnname GLOB '*Some string*') AND ( ( (columnname GLOB '*[^a-zA-Z0-9_]some string[^a-zA-Z0-9_]*' AND columnname GLOB '*some string[^a-zA-Z0-9_]*' AND columnname GLOB '*[^a-zA-Z0-9_]some string*') OR (columnname GLOB '*[^a-zA-Z0-9_]Some string[^a-zA-Z0-9_]*' AND columnname GLOB '*Some string[^a-zA-Z0-9_]*' AND columnname GLOB '*[^a-zA-Z0-9_]Some string*') ) ) 

GLOB mayúsculas y minúsculas, por lo que tengo un OR adicional

La segunda solución de @cybersam es mucho más rápida en mi caso.

SOLUCIÓN 2 : Para manejar el caso en-sensibilidad

 SELECT * FROM tablename where (columnname GLOB '*[sS][oO][mM][eE] [sS][tT][rR][iI][nN][gG]*') AND ( ( columnname GLOB '*[^a-zA-Z0-9_][sS][oO][mM][eE] [sS][tT][rR][iI][nN][gG][^a-zA-Z0-9_]*' AND columnname GLOB '*[sS][oO][mM][eE] [sS][tT][rR][iI][nN][gG][^a-zA-Z0-9_]*' AND columnname GLOB '*[^a-zA-Z0-9_][sS][oO][mM][eE] [sS][tT][rR][iI][nN][gG]*') ) 

One Solution collect form web for “¿Cómo lograr límite de palabras en Sqlite Android?”

Para apoyar realmente REGEXP , usted tendrá que agregar su propia función del usuario de regexp () .

Este enlace puede ayudarte a averiguar cómo crear funciones definidas por el usuario, en general, para Android, pero no es sencillo.

Si sus patrones son muy simples, el operador GLOB podría ser lo suficientemente bueno.

Por ejemplo, para realizar una búsqueda equivalente a esta consulta MYSQL:

 SELECT * FROM tablename where columnname REGEXP '[[:<:]]some string[[:>:]]' 

Puede probar esto en SQLite:

 SELECT * FROM tablename where columnname GLOB '[^a-zA-Z0-9_]some string[^a-zA-Z0-9_]' OR columnname GLOB 'some string[^a-zA-Z0-9_]' OR columnname GLOB '[^a-zA-Z0-9_]some string' OR columnname GLOB 'some string'; 

La consulta anterior utiliza el hecho de que en MYSQL, un carácter de palabra se define como un carácter alfanumérico o un guión bajo. Los términos OR adicionales se necesitan para igualar también los casos en los que no hay texto en ninguno (o ambos) lados de some string .

Finalmente, si 'alguna cadena' es relativamente rara en columnname , entonces la siguiente consulta más larga puede ser realmente más rápida, ya que sólo hará múltiples evaluaciones GLOB para una minoría de valores:

 SELECT * FROM tablename where columnname GLOB '*some string*' AND ( columnname GLOB '[^a-zA-Z0-9_]some string[^a-zA-Z0-9_]' OR columnname GLOB 'some string[^a-zA-Z0-9_]' OR columnname GLOB '[^a-zA-Z0-9_]some string' OR columnname GLOB 'some string'); 
  • Consulta de SQLite menor o mayor que check
  • Android - SimpleCursorAdapter.ViewBinder - Establecer el color de fondo
  • Java.lang.IllegalStateException: No se pudo leer la fila 0, col 0 de CursorWindow
  • Patrón de bloqueo de múltiples hilos de SQLiteDatabase
  • Implementación SQLite deficiente? Acceso a los datos por primera vez demasiado lento
  • SQLite por qué copiamos db en carpeta de activos
  • ¿Estoy bebiendo la plataforma / hardware?
  • Actualización de base de datos y aplicaciones Android SQLite
  • Insertar TimeStamp en SQLite para Android
  • Android SQLite ON CONFLICT UPDATE es posible?
  • ¿Cómo puedo insertar una base de datos SQLite en una aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.