Comparación de cadenas con acentos!!!

10/10/2006 - 16:06 por xavendano | Informe spam
Saludos

Se tiene un proceso que compara una palabra (que viene por teclado) contra
otras que están en una tabla de base de datos.

Se debe determinar si la palabra que se incluye está o no en esa lista. El
problema surge con los acentos. Por ejemplo:

El usuario escribe: Atencion (sin acentuar) Y en base de datos está:
Atención (acentuado)

La idea es que la app sea lo suficientemente capaz de determinar que,
independientemente de la entrada del usuario en cuanto a gramática, se pueda
validar que la forma correcta de la palabra ya existe en base de datos.

Existe en .NET algún método que me permita comparar omitiendo las palabras
acentuadas o nop...


De antameno, gracias...

Preguntas similare

Leer las respuestas

#1 floyd303
10/10/2006 - 16:53 | Informe spam
Hola!

A bote pronto se me ocurren 2 opciones:

- Grabar en la base de datos la palabra acentuada y sin acentuar. Y
realizar la busqueda contra las 2.
- Hacer tantas busquedas desde la palabra como posibilidades de
acentuarla. Me explico: Como no tienes un avaluador sintactivo incluido
(el PC no sabe que atención se acentua en la o) puedes buscar por
átencion, aténcion, atencíon y atención... y por supuesto la de sin
nigun acento.

Porque otro tema seria incluir un evaluador sintactico que sepa que
atención de acentua en la o.

Espero que esto te ayude
Saludos
Roberto M. Oliva


xavendano ha escrito:

Saludos

Se tiene un proceso que compara una palabra (que viene por teclado) contra
otras que están en una tabla de base de datos.

Se debe determinar si la palabra que se incluye está o no en esa lista. El
problema surge con los acentos. Por ejemplo:

El usuario escribe: Atencion (sin acentuar) Y en base de datos está:
Atención (acentuado)

La idea es que la app sea lo suficientemente capaz de determinar que,
independientemente de la entrada del usuario en cuanto a gramática, se pueda
validar que la forma correcta de la palabra ya existe en base de datos.

Existe en .NET algún método que me permita comparar omitiendo las palabras
acentuadas o nop...


De antameno, gracias...
Respuesta Responder a este mensaje
#2 Alberto Poblacion [MVP]
10/10/2006 - 18:29 | Informe spam
wrote in message
news:
- Grabar en la base de datos la palabra acentuada y sin acentuar. Y
realizar la busqueda contra las 2.



Si la base de datos es Sql Server hay una ópción mejor, que consiste en
configurar esa columna (o esa tabla, o toda la base de datos) con una
colación de tipo "Accent Insensitive", con lo cual al hacer un SELECT te
encuentra la palabra sin tener en cuenta los acentos.
Respuesta Responder a este mensaje
#3 floyd303
10/10/2006 - 19:36 | Informe spam
Hola!

Jejeje por algo eres MVP!!... Me la apunto.
Ahora yo, en su momento me saque la certificacion de administracion SQL
Server 6.5 (que tiempos aquellos).. y no me acuerdo de ese tipo de
colacion :(

Saludos
Roberto M. Oliva

Alberto Poblacion [MVP] ha escrito:

wrote in message
news:
> - Grabar en la base de datos la palabra acentuada y sin acentuar. Y
> realizar la busqueda contra las 2.

Si la base de datos es Sql Server hay una ópción mejor, que consiste en
configurar esa columna (o esa tabla, o toda la base de datos) con una
colación de tipo "Accent Insensitive", con lo cual al hacer un SELECT te
encuentra la palabra sin tener en cuenta los acentos.
Respuesta Responder a este mensaje
#4 Alberto Poblacion [MVP]
10/10/2006 - 20:52 | Informe spam
wrote in message
news:
Ahora yo, en su momento me saque la certificacion de administracion SQL
Server 6.5 (que tiempos aquellos).. y no me acuerdo de ese tipo de
colacion :(



Existir, existía, pero el problema con el 6.5 (y el 7, si no me
equivoco) es que el juego de caracteres y su colación había que
establecerlos durante la instalación, y eran globales para todas las bases
de datos del servidor, y no se podían cambiar sin reinstalar el producto. O
por lo menos, creo recordar que era asi. Con lo cual acababas trabajando
siempre con el valor que se instalaba por defecto durante el setup, que era
sensible a acentos.
Por suerte, en la versión 2000 y en la 2005 se pueden configurar a un
nivel más bajo (base de datos, tabla o incluso columna), con lo cual es más
fácil hacer uso de esta funcionalidad.

ALTER TABLE LaTabla ALTER COLUMN LaColumna
varchar(10) COLLATE Latin1_General_CI_AI NOT NULL

Nota: ..._CI_AI = Case Insensitive, Accent Insensitive.
Respuesta Responder a este mensaje
#5 xavendano
10/10/2006 - 22:27 | Informe spam
Excelente amigos...
He tomado en cuenta todas sus opinionesseguramente tendré una solución
pronto.

Gracias.


"Alberto Poblacion [MVP]"
wrote in message news:
wrote in message
news:
Ahora yo, en su momento me saque la certificacion de administracion SQL
Server 6.5 (que tiempos aquellos).. y no me acuerdo de ese tipo de
colacion :(



Existir, existía, pero el problema con el 6.5 (y el 7, si no me
equivoco) es que el juego de caracteres y su colación había que
establecerlos durante la instalación, y eran globales para todas las bases
de datos del servidor, y no se podían cambiar sin reinstalar el producto.
O por lo menos, creo recordar que era asi. Con lo cual acababas trabajando
siempre con el valor que se instalaba por defecto durante el setup, que
era sensible a acentos.
Por suerte, en la versión 2000 y en la 2005 se pueden configurar a un
nivel más bajo (base de datos, tabla o incluso columna), con lo cual es
más fácil hacer uso de esta funcionalidad.

ALTER TABLE LaTabla ALTER COLUMN LaColumna
varchar(10) COLLATE Latin1_General_CI_AI NOT NULL

Nota: ..._CI_AI = Case Insensitive, Accent Insensitive.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida