Comparar considerando mayúsculas y minúsculas en sqlserver

Preguntado hace 1 año

Guillermo Barrios
Editado hace 1 año
Votos
PositivosNegativosTotal
2 0 2
72 Visualizaciones
Compártelo: Compártelo en twitterCompártelo en Facebook

Hola, estoy comparando cadenas en un procedimiento almacenado y me he dado cuanta que el sql server considera iguales dos cadenas aunque tenga diferencias entre mayúsculas y minúsculas, por ejemplo:

select 'iguales' where 'A' = 'a'

:S

Para sql server son iguales.... ¿Cómo puedo obligarle a que me devuelva que son diferentes?

Usamos sqlserver 2008

Actualizando datos

1 Respuesta

Hace 1 año

chinovader
Editada hace 1 año
Votos
PositivosNegativosTotal
202

Un 'hack' rápido sería comparar el valor binario de las cadenas:

where CONVERT(varbinary, 'A') = CONVERT(varbinary, 'a')
-- de forma genérica:
-- where CONVERT(varbinary, columna) = CONVERT(varbinary, 'Cadena')

A nivel de configuración de SQL Server, la opción COLLATION por defecto de la instalación no distingue mayúsculas de minúsculas. Supongamos que tu instalación se hizo con la opción:

SQL_Latin1_General_CP1_CI_AS

CI significa 'Case Insensitive'

Entonces, se podría especificar una opción 'case sensitive' en la consulta, como por ejemplo: Latin1_General_CS_AS

where 'A' COLLATE Latin1_General_CS_AS = 'a'
-- de forma genérica:
-- where columna COLLATE Latin1_General_CS_AS = 'Cadena'

O incluso modificar la tabla:

ALTER TABLE tabla
ALTER COLUMN columna VARCHAR(100) COLLATE Latin1_General_CS_AS

(Te aconsejaría leer sobre las opciones para conocer cuál es la adecuada en tu caso, porque mi conocimiento de este tema es muy básico)

Saludos

Cerrar

Tu respuesta

Confirmación

Cerrar

Si sales ahora, perderás los cambios. ¿Estás seguro de querer salir?

Para participar en Babelias, debes estar convenientemente validado. Si ya eres usuario inicia sesión, si no lo eres, te puedes registrar.

Dar una respuesta

Trata de ser descriptivo, usa al menos 25 caracteres