Consulta SQL con acentos y sin acentos ¿es posible?

04/06/2006 - 16:43 por xavendano | Informe spam
Saludos,

Tengo la situación siguiente: en una consulta SQL existen registro con datos
similares pero algunos con acentos y otros no.
Algo así.
ID NAME
5 Pérez
345 perez
740 pérez
932 PEREZ
1023 PÉREZ

Llevando el elemento a buscar todo a mayúsculas o minúsculas elimino el
problema de cómo fué escrito. En ese aspecto.
Pero con los acentos es una situación diferente.
Existe alguna manera, de ser "indiferente" acerca de los acentos en los
caracteres, de forma que en una consulta cuando especifíque "perez" o
"pérez"recupere todos los registro de la tabla????

De antemano, muchas gracias por su ayuda..

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
04/06/2006 - 18:19 | Informe spam
xavendano,

Existe alguna manera, de ser "indiferente" acerca de los acentos en los
caracteres, de forma que en una consulta cuando especifíque "perez" o
"pérez"recupere todos los registro de la tabla????



Si existe la forma de hacer la consulta y que SQL Server no sea sensitivo a
los acentos. Cuando creas una tabla, puedes especificar la collation que
usara la columna, y en caso de no especificarla SQL Server tomara la
collation de la base de datos.

Puedes revisar la vista INFORMATION_SCHEMA.COLUMNS para ver la collation que
usa esa columna y tambien la funcion DATABASEPROPERTYEX para ver la collation
de la base de datos. De seguro debe estar usando una collation que es
sensitiva a los acentos %_AS. En ese caso debes usar la clausula COLLATE en
la sentencia select para definir la collation que deseas que SQL Server use.

Ejemplo:

create table t1 (
c1 varchar(50) collate SQL_Latin1_General_Cp1_CI_AS
)
go

insert into t1 values('PÉREZ')
insert into t1 values('PEREZ')
go

select * from t1 where c1 = 'PÉREZ'
go

select * from t1 where c1 collate SQL_Latin1_General_Cp1_CI_AI = 'PÉREZ'
go

drop table t1
go

Fijate que en la segunta sentencia "select", le especifique a SQL Server que
hiciera la comparacion usando una collation insensitiva a los acentos.


AMB

"xavendano" wrote:

Saludos,

Tengo la situación siguiente: en una consulta SQL existen registro con datos
similares pero algunos con acentos y otros no.
Algo así.
ID NAME
5 Pérez
345 perez
740 pérez
932 PEREZ
1023 PÉREZ

Llevando el elemento a buscar todo a mayúsculas o minúsculas elimino el
problema de cómo fué escrito. En ese aspecto.
Pero con los acentos es una situación diferente.
Existe alguna manera, de ser "indiferente" acerca de los acentos en los
caracteres, de forma que en una consulta cuando especifíque "perez" o
"pérez"recupere todos los registro de la tabla????

De antemano, muchas gracias por su ayuda..



Respuesta Responder a este mensaje
#2 xavendano
05/06/2006 - 15:44 | Informe spam
Excelente Alejandro, tu información fué de gran utilidad.
Todo funcionó perfectamente
Muchas gracias

"Alejandro Mesa" wrote in message
news:
xavendano,

Existe alguna manera, de ser "indiferente" acerca de los acentos en los
caracteres, de forma que en una consulta cuando especifíque "perez" o
"pérez"recupere todos los registro de la tabla????



Si existe la forma de hacer la consulta y que SQL Server no sea sensitivo
a
los acentos. Cuando creas una tabla, puedes especificar la collation que
usara la columna, y en caso de no especificarla SQL Server tomara la
collation de la base de datos.

Puedes revisar la vista INFORMATION_SCHEMA.COLUMNS para ver la collation
que
usa esa columna y tambien la funcion DATABASEPROPERTYEX para ver la
collation
de la base de datos. De seguro debe estar usando una collation que es
sensitiva a los acentos %_AS. En ese caso debes usar la clausula COLLATE
en
la sentencia select para definir la collation que deseas que SQL Server
use.

Ejemplo:

create table t1 (
c1 varchar(50) collate SQL_Latin1_General_Cp1_CI_AS
)
go

insert into t1 values('PÉREZ')
insert into t1 values('PEREZ')
go

select * from t1 where c1 = 'PÉREZ'
go

select * from t1 where c1 collate SQL_Latin1_General_Cp1_CI_AI = 'PÉREZ'
go

drop table t1
go

Fijate que en la segunta sentencia "select", le especifique a SQL Server
que
hiciera la comparacion usando una collation insensitiva a los acentos.


AMB

"xavendano" wrote:

Saludos,

Tengo la situación siguiente: en una consulta SQL existen registro con
datos
similares pero algunos con acentos y otros no.
Algo así.
ID NAME
5 Pérez
345 perez
740 pérez
932 PEREZ
1023 PÉREZ

Llevando el elemento a buscar todo a mayúsculas o minúsculas elimino el
problema de cómo fué escrito. En ese aspecto.
Pero con los acentos es una situación diferente.
Existe alguna manera, de ser "indiferente" acerca de los acentos en los
caracteres, de forma que en una consulta cuando especifíque "perez" o
"pérez"recupere todos los registro de la tabla????

De antemano, muchas gracias por su ayuda..



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida