Solución:
No es el operador el que distingue entre mayúsculas y minúsculas, es la propia columna.
Cuando se realiza una instalación de SQL Server, se elige una intercalación predeterminada para la instancia. A menos que se mencione explícitamente lo contrario (verifique la cláusula de clasificación a continuación), cuando se crea una nueva base de datos, hereda la clasificación de la instancia y cuando se crea una nueva columna, hereda la clasificación de la base de datos a la que pertenece.
Una colación como sql_latin1_general_cp1_ci_as
dicta cómo se debe tratar el contenido de la columna. CI significa sin distinción entre mayúsculas y minúsculas y AS significa sensible al acento.
Una lista completa de intercalaciones está disponible en https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx
(a) Para comprobar una intercalación de instancias
select serverproperty('collation')
(b) Para comprobar la intercalación de una base de datos
select databasepropertyex('databasename', 'collation') sqlcollation
(c) Para crear una base de datos usando una colación diferente
create database exampledatabase
collate sql_latin1_general_cp1_cs_as
(d) Para crear una columna usando una colación diferente
create table exampletable (
examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null
)
(e) Para modificar una intercalación de columnas
alter table exampletable
alter column examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null
Es posible cambiar las intercalaciones de una instancia y de una base de datos, pero no afecta a los objetos creados previamente.
También es posible cambiar una clasificación de columnas sobre la marcha para la comparación de cadenas, pero esto no es recomendable en un entorno de producción porque es extremadamente costoso.
select
column1 collate sql_latin1_general_cp1_ci_as as column1
from table1
Toda esta charla sobre colación parece un poco complicada. ¿Por qué no usar algo como:
IF UPPER(@@VERSION) NOT LIKE '%AZURE%'
Entonces su cheque no distingue entre mayúsculas y minúsculas sea cual sea la intercalación
Tienes una opción para definir orden de clasificación a la hora de definir tu mesa. Si define un orden que distingue entre mayúsculas y minúsculas, su LIKE
el operador se comportará de forma sensible a mayúsculas y minúsculas; si define un orden de clasificación que no distingue entre mayúsculas y minúsculas, el LIKE
El operador también ignorará las mayúsculas y minúsculas:
CREATE TABLE Test (
CI_Str VARCHAR(15) COLLATE Latin1_General_CI_AS -- Case-insensitive
, CS_Str VARCHAR(15) COLLATE Latin1_General_CS_AS -- Case-sensitive
);
Aquí hay una demostración rápida de sqlfiddle que muestra los resultados del orden de clasificación en búsquedas con LIKE
.