sql >> Base de Datos >  >> RDS >> Sqlserver

¿El operador LIKE distingue entre mayúsculas y minúsculas con MSSQL Server?

No es el operador el que distingue entre mayúsculas y minúsculas, es la columna misma.

Cuando se realiza una instalación de SQL Server, se elige una intercalación predeterminada para la instancia. A menos que se indique explícitamente lo contrario (consulte la cláusula de intercalación a continuación), cuando se crea una nueva base de datos, hereda la intercalación de la instancia y cuando se crea una nueva columna, hereda la intercalación de la base de datos a la que pertenece.

Una intercalación como sql_latin1_general_cp1_ci_as dicta cómo se debe tratar el contenido de la columna. CI significa insensible a mayúsculas y minúsculas y AS significa sensible a acentos.

Una lista completa de intercalaciones está disponible en https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

(a) Para comprobar una colación de instancias

select serverproperty('collation')

(b) Para verificar una colación de base de datos

select databasepropertyex('databasename', 'collation') sqlcollation

(c) Para crear una base de datos utilizando una intercalación diferente

create database exampledatabase
collate sql_latin1_general_cp1_cs_as 

(d) Para crear una columna utilizando una intercalació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 una instancia y las intercalaciones de la base de datos, pero no afecta a los objetos creados previamente.

También es posible cambiar una intercalación de columnas sobre la marcha para la comparación de cadenas, pero esto no se recomienda en un entorno de producción porque es extremadamente costoso.

select
  column1 collate sql_latin1_general_cp1_ci_as as column1
from table1