Thu*_*der 122 t-sql database sql-server collation
我有一个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
Run Code Online (Sandbox Code Playgroud)
它运行正常.
虽然SQL的其余部分很清楚,但我对它的功能非常困惑COLLATE SQL_Latin1_General_CP1_CI_AS.
任何人都可以向我解释这个吗?另外,我想知道以这种方式创建数据库是否是最佳做法?
Kri*_*ris 230
它设置数据库服务器的排序方式.在这种情况下:
SQL_Latin1_General_CP1_CI_AS
Run Code Online (Sandbox Code Playgroud)
分成有趣的部分:
latin1 使服务器使用charset latin 1处理字符串,基本上是asciiCP1 代表代码页1252CI 不区分大小写的比较所以'ABC'将等于'abc'AS 重音敏感,所以'ü'不等于'你'PS有关更多详细信息,请务必阅读@ solomon-rutzky的答案.
Sol*_*zky 59
请注意,接受的答案有点不完整.是的,在最基本的级别Collation处理排序.但是,所选择的排序规则定义的比较规则在用户查询之外的许多地方用于用户数据.
该语句的COLLATE SQL_Latin1_General_CP1_CI_AS子句COLLATE指定数据库的默认排序规则,而不是服务器; 数据库级和服务器级默认Collations控制不同的东西.
服务器(即实例) - 级别控件:
CREATE DATABASE,COLLATE {collation_name},CREATE DATABASE,和master.model,因此它是临时表(全局和本地)中字符串列的默认排序规则,而不是表变量.msdb,因此用于服务器级数据的Collation ,例如数据库名称(即tempdb列入tempdb),登录名称等.master标签name缺少子句时,用于新创建的数据库的默认排序规则数据库级控件:
sys.databases,GOTO,COLLATE,CHAR,VARCHAR,和NCHAR-但不要使用NVARCHAR或TEXT)当NTEXT从句从列定义丢失.这适用于两者TEXT和NTEXT陈述.COLLATE)和字符串变量(即CREATE TABLE)的默认排序规则.只有在将字符串和变量与其他字符串和变量进行比较时才会使用此排序规则.将字符串/变量与列进行比较时,将使用列的排序规则.ALTER TABLE ... ADD),列名称(即'some text'),索引名称(即@StringVariable)等.也:
sys.objects是旧的(并且肯定是过时的,即使没有正式弃用)SQL Server特定的排序规则(在SQL Server能够使用OS级排序规则之前创建).sys.columns 指的是确定以下内容的文化/区域设置:
sys.indexes,Latin1和NVARCHAR数据(列,文本和变量).代码页是扩展ASCII的"扩展"部分,并控制哪些字符用于值128 - 255.COLLATE SQL_Latin1_General_CP1_CI_AS和SQL_(即Unicode)数据.这指定了数据库的默认排序规则.您在数据库中的表中创建的每个文本字段都将使用该排序规则,除非您指定另一个排序规则.
数据库始终具有默认排序规则.如果未指定any,则使用SQL Server实例的默认排序规则.
您使用的排序规则的名称显示它使用Latin1代码页1,不区分大小写(CI)和重音敏感(AS).此排序规则在美国使用,因此它将包含在美国使用的排序规则.
排序规则决定如何比较文本值的相等性和相似性,以及在排序时如何比较它们.存储非unicode数据时使用代码页,例如varchar字段.
| 归档时间: |
|
| 查看次数: |
311372 次 |
| 最近记录: |