更改sql server 2008 r2中的列排序规则,土耳其语字母

时间:2013-01-28 07:25:42

标签: sql-server sql-server-2008-r2 collation

我们将更改现有数据库和列的排序规则。我们使用两种不同的排序规则 Turkish_CI_AS,SQL_Latin1_General_CP1254_CS_AS,我们将使用SQL_Latin1_General_CP1_CI_AS。

我想知道新的整理是否支持土耳其特殊字母?那么,像ç,ı,ğ或ü这样的字母会变成不同的字符吗?

1 个答案:

答案 0 :(得分:1)

排序与字符编码不同。更改排序规则只会更改字符排序方式的比较规则,它们在数据库中的表示方式。但是,根据Collation and Code Page Architecture中的表格,数据的整理用作客户端驱动程序的提示,以将非unicode 字符映射到特定代码页。

所以如果您的列的类型为VARCHAR或CHAR,则数据(显然)更改,因为以前在CP 1254中的字符将被解释作为CP 850中的字符。因此ç (\231)将成为þ (\231),依此类推。严格来说,可以将客户端中的数据重新解释为您想要的任何代码页,但实际上这是不可行的,并且需要很多低级别(即驱动程序)知识。

如果您的列是NVARCHAR或NCHAR,则编码不会更改,因为字符将UCS-2LE编码并进行操作(ç \u00e7将保留{{ 1}})。唯一会改变的是比较和排序规则(对famous Turkish collation dotted and dotless I/i comparison rules产生影响)。