Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Busqueda En Sqlite3
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
Guizans - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Busqueda En Sqlite3 
 
Hola!

 He buscado algo y he encontrado esto.

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


Espero que te sirva
 




===================
Proyecto Open Media Manager -> http://www.OpenMediaManager.com
 
netking86 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
Guizans - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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!
 




===================
Proyecto Open Media Manager -> http://www.OpenMediaManager.com
 
netking86 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
Guizans - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 11 Septiembre 2012, 17:20; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
Guizans - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Realizar Una Rutina De Busqueda Para ... JosueCR Bases de Datos 6 Domingo, 15 Agosto 2010, 17:38 Ver último mensaje
JosueCR
No hay nuevos mensajes Busqueda Filtrada jousseph Bases de Datos 14 Domingo, 12 Enero 2014, 14:02 Ver último mensaje
jguardon
No hay nuevos mensajes Busqueda Por Autor En La Granja!!! v3ctor General 2 Viernes, 07 Agosto 2015, 00:43 Ver último mensaje
v3ctor
No hay nuevos mensajes Problema Con Indice De Busqueda Mysql desoljor Aplicaciones/Fragmentos de Código 4 Lunes, 11 Enero 2016, 20:16 Ver último mensaje
desoljor
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron