我们有一个旧数据库,其中一些(较旧的)列使用“SQL_Latin1_General_CP1_CI_AS”,最近的更改已使用“Latin1_General_CI_AS”。
这很痛苦,因为连接需要额外的 COLLATE 语句才能工作。
我想将所有内容都调整为“Latin1_General_CI_AS”。据我所知,它们或多或少是相同的排序规则,并且在此过程中我不会丢失数据......
有谁知道是这样吗?
最佳答案
这是一个更完整的答案:
这些排序规则之间的主要区别在于它们如何应用字符扩展规则。某些拉丁字符可以扩展为多个字符。在处理非 unicode 文本时,SQL_xxxx 排序规则可能会忽略这些字符扩展,但将它们应用于 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
不同的字符。
关于sql - SQL Server SQL_Latin1_General_CP1_CI_AS 能否安全地转换为 Latin1_General_CI_AS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6296936/