|
Página 1 de 1
|
Autor |
Mensaje |
Guizans
Aprendiz
Registrado: Febrero 2012
Mensajes: 99
Edad: 45
|
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.
|
#1 Martes, 11 Septiembre 2012, 11:51 |
|
|
netking86
Técnico Programador
Registrado: Septiembre 2009
Mensajes: 159
Edad: 38 Ubicación: Málaga
|
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
|
#2 Martes, 11 Septiembre 2012, 12:39 |
|
|
Guizans
Aprendiz
Registrado: Febrero 2012
Mensajes: 99
Edad: 45
|
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.
|
#3 Martes, 11 Septiembre 2012, 16:12 |
|
|
netking86
Técnico Programador
Registrado: Septiembre 2009
Mensajes: 159
Edad: 38 Ubicación: Málaga
|
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
|
#4 Martes, 11 Septiembre 2012, 16:16 |
|
|
Guizans
Aprendiz
Registrado: Febrero 2012
Mensajes: 99
Edad: 45
|
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.
|
#5 Martes, 11 Septiembre 2012, 17:05 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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
|
#6 Martes, 11 Septiembre 2012, 17:17 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#7 Martes, 11 Septiembre 2012, 20:44 |
|
|
Guizans
Aprendiz
Registrado: Febrero 2012
Mensajes: 99
Edad: 45
|
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.
|
#8 Martes, 11 Septiembre 2012, 21:00 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|