sql >> Databasteknik >  >> RDS >> Sqlserver

Är LIKE-operatören skiftlägeskänslig med MSSQL Server?

Det är inte operatören som är skiftlägeskänslig, det är själva kolumnen.

När en SQL Server-installation utförs väljs en standardsortering till instansen. Såvida inte annat uttryckligen nämns (kolla sammanställningssatsen nedan) när en ny databas skapas ärver den sorteringen från instansen och när en ny kolumn skapas ärver den sorteringen från databasen den tillhör.

En sortering som sql_latin1_general_cp1_ci_as dikterar hur innehållet i kolumnen ska behandlas. CI står för skiftlägesinkänslig och AS står för accentkänslig.

En fullständig lista över sorteringar finns på https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

(a) För att kontrollera en instanssortering

select serverproperty('collation')

(b) För att kontrollera en databassortering

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

(c) Att skapa en databas med en annan sortering

create database exampledatabase
collate sql_latin1_general_cp1_cs_as 

(d) Att skapa en kolumn med en annan sortering

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

(e) För att ändra en kolumnsortering

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

Det är möjligt att ändra en instans och databaskollationer men det påverkar inte tidigare skapade objekt.

Det är också möjligt att ändra en kolumnkollation i farten för strängjämförelse, men detta rekommenderas starkt inte i en produktionsmiljö eftersom det är extremt kostsamt.

select
  column1 collate sql_latin1_general_cp1_ci_as as column1
from table1


  1. php MySql-anslutningsfel

  2. Få senaste datum före datum värde i rad

  3. SQL Server hittar inte serialiseringssammansättning

  4. Oracle SQL-uppdateringsfråga uppdaterar endast värden om de är null