Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta SQL exceptuando tildes (https://www.clubdelphi.com/foros/showthread.php?t=68517)

ingabraham 18-06-2010 00:20:06

Consulta SQL exceptuando tildes
 
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 01:55:33

Like
 
Código Delphi [-]
with consulta do
 begin
    close;
    sql.text:='select nombre from tabla where nombre like   '+QuotedStr('%'+edit1.Text);
    open;
  end;

ingabraham 18-06-2010 21: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 23: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 19:59:30

Cita:

Empezado por Casimiro Notevi (Mensaje 367680)
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 20:12:51

Es el juego de caracteres, por ejemplo, el campo "nombre" de una tabla de clientes puede tener el siguiente dominio:
Código:

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 23:50:14

Cita:

Empezado por osmuar_exp (Mensaje 367621)
Código Delphi [-]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 23:53:55

Cita:

Empezado por Casimiro Notevi (Mensaje 367902)
Es el juego de caracteres, por ejemplo, el campo "nombre" de una tabla de clientes puede tener el siguiente dominio:
Código:

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 23-06-2010 00: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.


La franja horaria es GMT +2. Ahora son las 06:38:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi