gpt4 book ai didi

sql-server - 多语言数据库的最佳默认排序规则

转载 作者:行者123 更新时间:2023-12-02 19:30:33 27 4
gpt4 key购买 nike

创建数据库时我对默认排序规则有点困惑。数据库中存储的数据将采用不同的语言。该数据库的主要用户将使用西类牙语,但也会使用英语、法语......由于西类牙语默认排序规则为 Modern_Spanish_CI_AS,而英语、法语、意大利语.. 默认为 Latin1_General_CI_AS,因此我想了解要使用哪种排序规则,以及使用一种排序规则或另一种排序规则是否存在一些缺点。

非常感谢您的帮助问候

哈维尔

最佳答案

排序规则有两个作用:

  1. 对于非 Unicode 数据类型,它确定数据的代码页,即它确定哪些字符可以存储在列/变量中
  2. 对于所有数据类型,它都会影响数据的排序和比较方式,即 ORDER BY 和相等

为了避免第一个问题出现问题,请始终使用 nchar/nvarchar 数据类型存储和操作 Unicode 数据,因为这样您就不必担心排序规则。它需要更多的磁盘空间,但它避免了一些非常尴尬的问题,因此对于大多数人来说,这可能是一个很好的权衡。

对于第二个问题,使用对您的数据库最有意义的排序规则,即哪种排序规则以您大多数时候想要的方式对数据进行排序和比较?例如,如果您知道区分大小写的比较很重要,那么 Latin1_General_CS_AS 可能是更好的选择。

如果您需要对特定查询进行更多控制,您始终可以使用 COLLATE 显式指定排序规则:

create table #t (name nvarchar(100))

insert into #t select N'Che'
insert into #t select N'Carlos'
insert into #t select N'Cruz'

select name from #t order by name collate Modern_Spanish_CI_AS
select name from #t order by name collate Traditional_Spanish_CI_AS

drop table #t

如果您不知道如何对文本数据进行排序或比较,并且您的用户也不知道,那么我会继续使用您的默认排序规则(并使用 Unicode!);在最坏的情况下,您始终可以将数据移动到具有正确排序规则的新表中。在线图书中有很多有关排序规则的文档,您应该查看一下。

关于sql-server - 多语言数据库的最佳默认排序规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com