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=69190)

ingabraham 31-07-2010 18:21:44

Consulta Sql exceptuando tildes.
 
en mi base de datos tengo

maría díaz marquez

y quiero que al buscarla escribiendo en un edit me aparesca

maria diaz marquez.


es un sql.

manuc 06-08-2010 17:07:04

Hola ingabraham,

Hay muchas formas de hacer lo que quieres hacer.

Yo te diría que lo mejor es que tengas en tu base de datos un campo con el nombre normalizado. Es decir, si en tu caso lo que te sobran son las tíldes, pues un campo donde tengas el mismo nombre pero sin tildes.

Esto lo puedes hacer con un procedimiento al guardar o con un trigger en base de datos.

Con este método podrás utilizar tu campo normalizado en sentencias SQL y localizar un registro, con y sin tildes.

Otra solución más sencialla y explicita para lo que pides, es crear un campo calculado en tu Dataset y reemplazar las vocales con tildes por vocales sin tildes.

Espero que te ayude.

Un saludo.

olbeup 09-08-2010 09:42:20

Ségun que base de datos estés utilizando MySQL, Firebird, MSSQL SERVER, se puede grabar un nombre con acento y después buscar sin acento, yo utilizao MSSQL SERVER y a la hora de buscar un nombre con acento solo tiene que poner en el WHEHRE NOMBRE COLLATE Latin1_General_CI_AI LIKE '%lopez', en este WHERE te buscará el apellido sin acento y en minúscula aunque lo hayas escrito en mayúscula, esto es debido a:

CaseSensitivity

CI
especifica que no se diferencia mayúsculas de minúsculas,
CSespecifica que se diferencia mayúsculas de minúsculas.

AccentSensitivity
AI especifica que no se distinguen acentos,
AS especifica que se distinguen acentos.

Un saludo.

Casimiro Notevi 09-08-2010 10:21:55

Tal y como ha explicado olbeup sólo debes usar un juego de caracteres 'CI' para lograr lo que quieres.

manuc 09-08-2010 12:19:33

Que bién, hoy ya aprendí algo nuevo. No conocía este juego de caracteres.

He probado en Firebird y es "COLLATE ES_ES_CI_AI"

Perfecto.

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 14:41:35.

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