sql >> Databáze >  >> RDS >> Sqlserver

Rozlišuje operátor LIKE u MSSQL Server velká a malá písmena?

Není to operátor, kdo rozlišuje velká a malá písmena, ale samotný sloupec.

Když je provedena instalace SQL Server, je pro instanci vybráno výchozí řazení. Pokud není výslovně uvedeno jinak (zkontrolujte níže uvedenou klauzuli o třídění), při vytvoření nové databáze zdědí řazení z instance a při vytvoření nového sloupce zdědí řazení z databáze, do které patří.

Porovnání jako sql_latin1_general_cp1_ci_as určuje, jak se má zacházet s obsahem sloupce. CI znamená rozlišit velká a malá písmena a AS znamená citlivý na přízvuk.

Úplný seznam porovnávání je k dispozici na https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

(a) Kontrola řazení instancí

select serverproperty('collation')

(b) Kontrola porovnávání databáze

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

(c) Chcete-li vytvořit databázi pomocí jiného řazení

create database exampledatabase
collate sql_latin1_general_cp1_cs_as 

(d) Chcete-li vytvořit sloupec pomocí jiného řazení

create table exampletable (
    examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null
)

(e) Úprava řazení sloupců

alter table exampletable
alter column examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null

Je možné změnit kolace instance a databáze, ale neovlivní to dříve vytvořené objekty.

Je také možné změnit řazení sloupců za běhu pro porovnání řetězců, ale to se v produkčním prostředí velmi nedoporučuje, protože je to extrémně nákladné.

select
  column1 collate sql_latin1_general_cp1_ci_as as column1
from table1


  1. Nejlepších n různých hodnot jednoho sloupce v Oracle

  2. Lower_case_table_names=1 na Ubuntu 18.04 neumožňuje spuštění mysql

  3. Je možné získat seznam řádků seskupených podle názvu sloupce v Mysql?

  4. Jak provést příkaz IF v SQL?