Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O operador LIKE diferencia maiúsculas de minúsculas com o MSSQL Server?


Não é o operador que diferencia maiúsculas de minúsculas, é a própria coluna.

Quando uma instalação do SQL Server é executada, um agrupamento padrão é escolhido para a instância. A menos que explicitamente mencionado de outra forma (verifique a cláusula collate abaixo) quando um novo banco de dados é criado, ele herda o agrupamento da instância e quando uma nova coluna é criada, ele herda o agrupamento do banco de dados ao qual pertence.

Um agrupamento como sql_latin1_general_cp1_ci_as determina como o conteúdo da coluna deve ser tratado. CI significa case insensitive e AS significa acento sensível.

Uma lista completa de agrupamentos está disponível em https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

(a) Para verificar um agrupamento de instâncias
select serverproperty('collation')

(b) Para verificar um agrupamento de banco de dados
select databasepropertyex('databasename', 'collation') sqlcollation

(c) Para criar um banco de dados usando um agrupamento diferente
create database exampledatabase
collate sql_latin1_general_cp1_cs_as 

(d) Para criar uma coluna usando um agrupamento diferente
create table exampletable (
    examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null
)

(e) Para modificar um agrupamento de colunas
alter table exampletable
alter column examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null

É possível alterar uma instância e agrupamentos de banco de dados, mas isso não afeta os objetos criados anteriormente.

Também é possível alterar um agrupamento de colunas em tempo real para comparação de strings, mas isso não é recomendado em um ambiente de produção porque é extremamente caro.
select
  column1 collate sql_latin1_general_cp1_ci_as as column1
from table1