Что общего сопоставления латинских типа 1 для SQL СР1 ки как делать?


у меня есть SQL-запрос для создания базы данных в SQLServer, как показано ниже:

create database yourdb
on
( name = 'yourdb_dat',
  filename = 'c:program filesmicrosoft sql servermssql.1mssqldatayourdbdat.mdf',
  size = 25mb,
  maxsize = 1500mb,
  filegrowth = 10mb )
log on
( name = 'yourdb_log',
  filename = 'c:program filesmicrosoft sql servermssql.1mssqldatayourdblog.ldf',
  size = 7mb,
  maxsize = 375mb,
  filegrowth = 10mb )
COLLATE SQL_Latin1_General_CP1_CI_AS;
go

Он нормально работает.

в то время как остальная часть SQL ясно, что я довольно запутался в функциональности COLLATE SQL_Latin1_General_CP1_CI_AS.

может кто-нибудь объяснить это мне? Кроме того, я хотел бы знать, является ли создание базы данных таким образом лучшей практикой?

5 82

5 ответов:

Он задает способ сортировки сервера базы данных. в этом случае:

SQL_Latin1_General_CP1_CI_AS

разбивается на интересные части:

  1. latin1 заставляет сервер обрабатывать строки, используя кодировку latin 1, в основном ascii
  2. CP1 обозначает кодовую страницу 1252
  3. CI сравнения без учета регистра, поэтому " ABC "будет равно "abc"
  4. AS акцент чувствителен, поэтому ' ü 'не равно 'u'

П. С. для более подробная информация обязательно читайте ответ @ solomon-rutzky.

CP1 означает 'кодовая страница 1' - технически это переводится на кодовую страницу 1252

пожалуйста, имейте в виду, что принятый ответ немного неполный. Да, на самом базовом уровне сортировки, обработки сортировки. Но правила сравнения, определенные выбранными параметрами сортировки, используются во многих местах вне пользовательских запросов к пользовательским данным.

The COLLATE {collation_name} статьи CREATE DATABASE оператор задает параметры сортировки по умолчанию база данных и не сервер; параметры сортировки на уровне базы данных и на уровне сервера по умолчанию управляются по-разному вещи.

сервер (т. е. экземпляра)-уровень управление:

  • параметры сортировки на уровне базы данных для системных баз данных:master,model,msdb и tempdb.
  • из-за контроля сортировки уровня БД tempdb, то параметры сортировки по умолчанию для строковых столбцов во временных таблицах (глобальных и локальных), но не табличные переменные.
  • из-за контроля сортировки уровня БД master, тогда используется сортировка ибо на уровне сервера данные, такие как имена баз данных (т. е. на sys.databases), логины и т. д.
  • обработка параметров / переменных
  • обработка имен курсоров
  • обработка GOTO метки
  • параметры сортировки по умолчанию, используемые для вновь созданных баз данных, когда COLLATE пункт отсутствует

The COLLATE ключевое слово укажите, какой набор символов и правила (порядок, правила конфронтации) вы используете для строковых значений.

например, в вашем случае вы используете латинские правила с нечувствительным к регистру (CI) и диакритические знаки (как)

вы можете обратиться к этой документация

Это задает параметры сортировки по умолчанию для базы данных. Каждое текстовое поле, созданное в таблицах базы данных, будет использовать эти параметры сортировки, если не указать другое.

база данных всегда имеет параметры сортировки по умолчанию. Если параметры сортировки по умолчанию для экземпляра SQL Server не указаны, используются параметры сортировки по умолчанию.

имя параметров сортировки, которые вы используете, показывает, что он использует кодовую страницу Latin1 1, является нечувствительным к регистру (CI) и чувствительным к акценту (AS). Это сопоставление является используется в США, поэтому он будет содержать правила сортировки, которые используются в США.

параметры сортировки определяют, как текстовые значения сравниваются для равенства и подобия, и как они сравниваются при сортировке. Кодовая страница используется при хранении данных, отличных от Юникода, например полей varchar.