Comparar mayúsculas y minúsculas en SQL Server

Pues eso, que puede parecer una tontería, pero es que hay veces cuando menos te lo esperas que tienes que hacer una comparación entre valores de un campo en alguna tabla perdida de tu base de datos SQL y resulta que ...claro para el motor es lo mismo un valor 'ABC' que 'abc'. ¿Pero sabemos por qué es así?.

La respuesta es sencilla: 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, pues esa "CI" significa 'Case Insensitive', o sea que las comparaciones no distinguirá entre mayúsculas y minúsculas...entonces ¿qué hacemos para solucionar el problema?. Tenemos 2 opciones:

1) Incluir la versión COLLATE "Case Sensitive" (CS) en la query si es para algo puntual.
    Ej: where "nombre_columna" COLLATE Latin1_General_CS_AS = 'texto_a_comparar'

2) Si nos interesa hacer un cambio más definitivo lo deberíamos hacer en la tabla, actualizándola.
   ALTER TABLE "nombre_tabla"
   ALTER COLUMN "nombre_columna" VARCHAR(100) COLLATE Latin1_General_CS_AS

Nos vemos.

35 comentarios :

  1. Muy buena informacion

    ResponderEliminar
  2. Muchas gracias, una gran ayuda.

    ResponderEliminar
  3. gracias brother me sacaste de un gran apuro

    ResponderEliminar
  4. EXCELENTE aporte... muchas gracias

    ResponderEliminar
  5. Espectacular lo que buscaba

    ResponderEliminar
  6. Bastante útil porque no encontré un ejemplo en Microsoft (o no supe buscar). Natasha

    ResponderEliminar
  7. Excelente fue de gran ayuda (y)

    ResponderEliminar
  8. Gracias por la explicación

    ResponderEliminar
  9. y si lo quiero para todas las bases de datos?, hay alguna opción global.

    ResponderEliminar
    Respuestas
    1. Si se necesita cambiar para toda las Tablas de la Base de Datos, se puede hacer para toda ella. En el Management Server, se selecciona la BD, se le da click derecho y se va la opción de propiedades, luego te presenta un "tab" General, que solamente es informativo, te vas hasta el "tab" de propiedades y ahí haces el cambio. Si va a ser una opción general para todas tus BD, tienes que tener cuidado al crear las nuevas BD y evaluar si te convienen cambiar la BD Model, así cada vez que creas una nueva BD ya viene con los cambios. Saludos.

      Eliminar
  10. Gracias. Yo también buscaba eso.

    ResponderEliminar
  11. Muy buen aporte, tan solo un comentario, cuidado que al hacer eso, el predicado no es SARGABLE hay que tenerlo en cuenta si queremos acceder por indice.

    http://www.vinguel.com

    ResponderEliminar
  12. Gracias muy efectivo.

    ResponderEliminar
  13. De gran ayuda y conocimiento.. gracias

    ResponderEliminar
  14. OMG que niveeeel papa..... tanto buscar y este hombre PUM PUM 2 lineas y soluciona el problema que otros con 100 lineas gracias MASTER

    ResponderEliminar
  15. Muchas gracias, me ha servido de mucho.

    ResponderEliminar
  16. Muchas gracias por el aporte

    ResponderEliminar
  17. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  18. Gracias por el aporte! Excelente

    ResponderEliminar
  19. Me había vuelto loco, esta información es ultra útil gracias compañero

    ResponderEliminar

Buscar en el Blog: