我们有一个遗留数据库,其中一些(较旧的)列使用"SQL_Latin1_General_CP1_CI_AS“,最近的更改使用了"Latin1_General_CI_AS”。
这是一种痛苦,因为连接需要额外的COLLATE语句才能工作。
我想把所有的东西都写成"Latin1_General_CI_AS“。据我所知,它们或多或少都是相同的排序规则,在此过程中我不会丢失数据……
有没有人知道是不是这样?
发布于 2014-02-27 07:12:55
下面是一个更完整的答案:
这些排序规则之间的关键区别在于它们应用字符扩展规则的方式。某些拉丁字符可以扩展为多个字符。SQL_xxxx排序规则在处理非unicode文本时可能会忽略这些字符扩展,但会将它们应用于unicode文本。因此:当使用一种排序规则与另一种排序规则时,联接、排序和比较可能会返回不同的结果。
示例:
在Latin1_General_CI_AS
下,这两条语句返回相同的一组记录,因为ß
扩展为ss
。
SELECT * FROM MyTable3 WHERE Comments = 'strasse'
SELECT * FROM MyTable3 WHERE Comments = 'straße'
当使用SQL_Latin1_General_CP1_CI_AS
时,上述语句返回不同的记录,因为ß
被视为与ss
不同的字符。
发布于 2018-10-25 12:28:12
为此,请转到数据库的属性并选择选项。
然后将集合类型更改为SQL_Latin1_General_CP1_CS_AS。
https://stackoverflow.com/questions/6296936
复制相似问题