我有一个 SQL 查询来在 SQLServer 中创建数据库,如下所示:

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

它运行良好。

虽然其余的 SQL 很明显,但我对 COLLATE SQL_Latin1_General_CP1_CI_AS 的功能感到非常困惑。

任何人都可以向我解释这一点吗?另外,我想知道以这种方式创建数据库是否是最佳实践?

最佳答案

它设置数据库服务器如何排序(比较文本片段)。在这种情况下:

SQL_Latin1_General_CP1_CI_AS

分解成有趣的部分:
  • latin1 使服务器使用字符集 latin 1 处理字符串,基本上是 ascii
  • CP1 代表代码页 1252
  • CI 不区分大小写的比较,所以 'ABC' 等于 'abc'
  • AS 重音敏感,所以 'ü' 不等于 'u'

  • 有关更多详细信息,请务必 read @solomon-rutzky's answer

    关于sql-server - 'COLLATE SQL_Latin1_General_CP1_CI_AS' 是做什么的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5039211/

    10-15 08:21