PDA

Ver la Versión Completa : Consulta SQL exceptuando tildes


ingabraham
17-06-2010, 23:20:06
hola tengo una consulta sql con like

pero el problema es que si el nombre tiene tilde no me la busca.

como hago?
ej.
maría Lopez

al escribir en el edit q tiene la consulta like %
maria
no me aparece esta q esta en la base de datos.

como hago un sql para q me busque sin incluir tildes?

osmuar_exp
18-06-2010, 00:55:33
with consulta do
begin
close;
sql.text:='select nombre from tabla where nombre like '+QuotedStr('%'+edit1.Text);
open;
end;

ingabraham
18-06-2010, 20:56:07
que hace QuotedStr?,

osea y te explico
en la base de datos estan guardados los nombres asi:

Jóse Gútierrez Díaz

y al momento de buscarlos en mi form de consultas
lo escribo asi:

jose gutierr

y me debe aparecer.

Casimiro Notevi
18-06-2010, 22:01:08
Debes usar un juego de caracteres que lo permita, busca en clubdelphi por "collate", encontrarás algunos hilos que han tratado sobre el tema.

ingabraham
21-06-2010, 18:59:30
Debes usar un juego de caracteres que lo permita, busca en clubdelphi por "collate", encontrarás algunos hilos que han tratado sobre el tema.

no tengo ni idea de loq es un collate
me puedes dar un ejemplo o unos hilos.

Casimiro Notevi
21-06-2010, 19:12:51
Es el juego de caracteres, por ejemplo, el campo "nombre" de una tabla de clientes puede tener el siguiente dominio:

create domain domNombre
varchar(64) character set ISO8859_1 collate ES_ES_CI_AI default '';


El "collate" ES_ES_CI_AI te permite hacer lo que quieres, si pones en una búsqueda: camion te encontrará camión, y al revés también.

ingabraham
22-06-2010, 22:50:14
Código Delphi [-] (http://www.clubdelphi.com/foros/#)with consulta do
begin
close;
sql.text:='select nombre from tabla where nombre like '+QuotedStr('%'+edit1.Text);
open;
end;




como asi :
tengo en mi base datos
días
y lo compara con
'dias'

esto es lo que hace el QuotedStr

ingabraham
22-06-2010, 22:53:55
Es el juego de caracteres, por ejemplo, el campo "nombre" de una tabla de clientes puede tener el siguiente dominio:

create domain domNombre
varchar(64) character set ISO8859_1 collate ES_ES_CI_AI default '';


El "collate" ES_ES_CI_AI te permite hacer lo que quieres, si pones en una búsqueda: camion te encontrará camión, y al revés también.

y si mi tabla ya esta creada y la tengo cargada con datos importantes

Casimiro Notevi
22-06-2010, 23:19:20
Pues no sabría decirte, nunca se me ha dado ese caso.
Tendrás que probarlo.
Si no funciona, puedes crearte un campo temporal con el nuevo collate, pasar los datos del campo original al nuevo temporal... y luego borras el campo original y renombras el temporal con el nombre del original.
Por probar.