我有一个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_CI_AS
有什么区别?具体来说,CP1 让我感到好奇。 - KadSQL_Latin1_General_CI_AS
这个排序规则,但确实有Latin1_General_CI_AS
。请参见SELECT * FROM fn_helpcollations() where name IN ('SQL_Latin1_General_CP1_CI_AS','Latin1_General_CI_AS','SQL_Latin1_General_CI_AS');
。这两种排序规则在排序和比较方面存在微妙的差异。请查看 http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as。 - Riley MajorLatin1_General_100_CI_AS_SC_UTF8
排序规则。请参阅我关于 UTF-8 排序规则的帖子:SQL Server 2019 中的本地 UTF-8 支持:救世主还是伪先知?。 - Solomon Rutzky