在表创建脚本中显式指定排序规则有哪些优缺点?

时间:2012-07-20 11:38:41

标签: sql collation

创建表时,COLLATE子句是可选的。所以,在:

CREATE TABLE T1 (
  F1 varchar(50) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL,
  F2 varchar(50) NOT NULL
)

F2的整理将由数据库默认确定。

过去,我们的团队总是使用默认排序规则。但是,我们现在有几列我们需要明确指定排序规则。我们正在考虑是否将我们的标准更改为始终指定排序规则并查找可能有助于此决策的任何其他信息。

所以:

  • 始终指定归类的优点/缺点是什么?
  • 如果我们总是指定整理,是否有任何需要注意的问题?

可能相关的其他信息:

  • 我们部署到多个客户端,并非所有客户端都会同时升级。
  • 某些客户端的服务器上有不同的排序规则配置。
  • 我们的应用程序使用Ansi字符串,任何对Unicode的考虑都是非常很长的路要走。
  • 我们使用MS SQL Server 2005及更高版本(尽管如果可能的话,我希望将问题保持在任何支持排序规则的平台上。)

请注意:此问题询问如何解决排序规则冲突或更改现有服务器/数据库/列排序规则。 (已经有很多这样的。)

2 个答案:

答案 0 :(得分:2)

您正在构建在客户端计算机上部署的应用程序。你应该明确你的校对。

例如,默认排序规则不区分大小写。如果客户端 - 无论出于何种原因 - 更喜欢将区分大小写作为其数据库中的默认值,则不同计算机上的比较会有所不同。

您还有调试问题。如果客户端按顺序获得结果,那么您的测试/开发系统可能会以不同的顺序获取它们。这可能会妨碍调试和客户支持。

最后,您可以更好地使用一致的软件进行调试,维护和支持。如果特定客户端需要不同格式的数据,则为该客户端自定义系统。

答案 1 :(得分:0)

如果与数据库的合作(默认)相同,则没有必要指定合作。只有在想要将数据存储在F1上的其他归类

时,才应该对示例执行的操作