What does 'COLLATE SQL_Latin1_General_CP1_CI_AS' do?

collation, database, sql-server, t-sql

Solution

It sets how the database server sorts (compares pieces of text). in this case:

SQL_Latin1_General_CP1_CI_AS

breaks up into interesting parts:

- `latin1` makes the server treat strings using charset latin 1, basically ascii

- `CP1` stands for Code Page 1252

- `CI` case insensitive comparisons so 'ABC' would equal 'abc'

- `AS` accent sensitive, so 'ü' does not equal 'u'

P.S. For more detailed information be sure to read @solomon-rutzky's answer.

Problem

I have an SQL query to create the database in SQLServer as given below: ``` create database yourdb on ( name = 'yourdb_dat', filename = 'c:\program files\microsoft sql server\mssql.1\mssql\data\yourdbdat.mdf', size = 25mb, maxsize = 1500mb, filegrowth = 10mb ) log on ( name = 'yourdb_log', filename = 'c:\program files\microsoft sql server\mssql.1\mssql\data\yourdblog.ldf', size = 7mb, maxsize = 375mb, filegrowth = 10mb ) COLLATE SQL_Latin1_General_CP1_CI_AS; go ``` It runs fine. While rest of the SQL is clear to be I am quite confused about the functionality of `COLLATE SQL_Latin1_General_CP1_CI_AS`. Can anyone explain this to me? Also, I would like to know if creating the database in this way is a best practice?

Original source