【问题标题】:which is the best collation for European + English language这是欧洲+英语的最佳排序方式
【发布时间】:2011-03-27 06:41:52
【问题描述】:

你好,

我正在为欧洲语言和英语开发,字符串在 sql server 2005 中存储为 NVARCHAR。

那么,要使用的最佳排序规则是“Latin1_General_CI_AS”涵盖所有内容? 也有变化 Latin1_General_CP1_CI_AS、Latin1_General_BIN、Latin1_General_BIN2 等

cmets\建议赞赏。

问候 DEE

【问题讨论】:

    标签: sql-server-2005 collation


    【解决方案1】:

    对于通用排序,“General Latin1”可能是西欧和英语语言的最佳选择。

    我相信如果未指定代码页(例如 CP1),则默认为代码页 1252(这也是 CP1 的含义)。所以我的理解是 Latin1_General_CI_AS 和 Latin1_General_CP1_CI_AS 是等价的。鉴于此,出于清晰的原因,我认为 Latin1_General_CP1_CI_AS 将是更好的选择。无论您使用CI_ASCS_AS 还是CI_AI,这纯粹是一个可用性问题,具体取决于您是否需要区分大小写和/或区分重音。 CI"a" == "A"AI"á" == "â"

    _BIN 和 _BIN2 选项表示排序规则将是基于代码点值的二进制。出于排序目的,您可能不希望这样做,因为该顺序不一定与任何类型的字典顺序匹配。但是,如果您只使用索引来搜索数据,那么其中之一可能是合适的,因为它可能更快。将字符值转换为关联的键值所需的计算量相对较少。

    编辑 正如 Martin 在评论中指出的那样,除非您使用 char、memo 或 varchar,否则代码页无关紧要。如果您完全坚持使用 Unicode(nchar、nvarchar、nmemo),那么代码页将不会发挥作用。但是,如果您将 Unicode 字符转换为单字节字符,则会使用它。

    【讨论】:

    • +1 只是为了避免混淆,代码页适用于CHAR 表示而不是NVARCHAR
    • 谢谢马克,这真的很有帮助
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    相关资源
    最近更新 更多