Busqueda En Sqlite3


Objetivo: Busqueda En Sqlite3
Hola comunidad.

Tengo una duda a ver si alguien me la puede resolver. ¿Como se hace una busqueda en sqlite3 para que no tenga en cuenta la mayúsculas ni los acentos? Me explico: para hacer una busqueda pongo el siguiente código:

esu = cone.Exec("Select * from electricidad where articulo like '" & filtro & "'")


La busqueda me la realiza muy bien, pero siempre tiene en cuenta las mayusculas o los acentos. ¿Hay alguna forma de evitar esto? He estado viendo en internet y lo único que he encontrado es esto, pero en el momento de hacer la busqueda el programa se me queda clavado.

esu = cone.Exec("Select * from fontaneria where articulo collate SQL_Latin1_General_CP1_CI_AS as c1 like" & filtro & "'")


Muchas gracias de antemano.

Perfil MP  
Objetivo: Re: Busqueda En Sqlite3
Hola!

He buscado algo y he encontrado esto.

http://myridia.com/dev_posts/view/302


Espero que te sirva

Objetivo: Re: Busqueda En Sqlite3
Gracias por contestar.

He mirado la página y la verdad es que no he entendido nada. Pero buscando (también lo podría haber encontrado antes ) he encontrado una solución, no se si será la más adecuada pero funciona:

resu = cone.Exec("Select * from fontaneria where replace(replace(replace(replace(replace(articulo,'á','a'),'é','e'),'í','i'),'ó','o'),'ú','u') like '" & filtro & "'")


Un saludo.

Perfil MP  
Objetivo: Re: Busqueda En Sqlite3
No se si es una solución óptima pero debe funcionar. Yo generalmente me cuido en salud de estas cosas. En todos los campos string por los que voy a buscar/ordenar, creo un campo copia.

Por ejemplo, NombreCliente y NombreCliente_copia.

En NombreCliente_copia guardo el nombre del cliente en minusculas y salvando acentos y demás. Tiene el problema de que es un campo más que debes gestionar a lo largo de todo el programa pero te facilita mucho las búsquedas y sobre todo, las ordenaciones.

Un saludo!

Objetivo: Re: Busqueda En Sqlite3
Ya había leído la solución esa por alguna página y pensándolo bien me parece una solución mucho más elegante que la mia.

Un saludo.

Perfil MP  
Objetivo: Re: Busqueda En Sqlite3
He encontrado estas paginas web, que comentan algo sobre el tema y el uso de la orden "COLLATE" y "UPPER"

http://www.babelias.com/preguntas/c...server/383.aspx

http://davasoft.blogspot.com.es/201...os-acentos.html

http://phpsblog.wordpress.com/2011/...culas-en-mysql/


Nunca las he probado, pero parece que resuelven el problema.

última edición por jsbsan el Martes, 11 Septiembre 2012, 17:20; editado 1 vez
Objetivo: Re: Busqueda En Sqlite3
Sqlite no soporta nativamente COLLATE con acentos, pero sí para mayúsculas/minúsculas. Supongo que MySQL y Postgres sí lo hacen, aunque en éstas BD lo mejor es declarar la comparación (collation) durante la creación del campo en la BD.

COLLATE significa "cotejo" o comparación, simplemente indica según la codificación de idioma el orden en el que van los caracteres unos a continuación de otros en la tabla de caracteres. En base a eso, el motor de BD busca y compara.

Volviendo a cuál sería la mejor solución, depende un poco del tamaño y el coste (en recursos) de tu base de datos. Si es una muy grande y realiza muchas consultas, no te recomiendo el método Replace, sino el que indica netking86. Lleva algo más de trabajo implementarlo, pero ganas en efectividad. Si sólo vas a realizar unas pocas búsquedas y el rendimiento no es muy crítico, optaría por el horrible método del Replace.

Saludos

Perfil MP  
Objetivo: Re: Busqueda En Sqlite3
Muchas gracias a todos por responder.

Mi base de datos es pequeña por lo tanto el método Replace va bien. Pero si, la solución de netking86 me parece la más lógica, por lo tanto es la que voy adoptar y me dejo de lios.

Un saludo.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1154s (PHP: -33% SQL: 133%)
Consultas SQL: 30 - Debug off - GZIP Activado