3

创建表时,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 及更高版本(尽管如果可能的话,我更愿意将问题保持在任何支持排序规则的平台上)。

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

4

2 回答 2

2

您正在构建一个部署在客户端机器上的应用程序。您应该明确说明您的排序规则。

例如,默认排序规则不区分大小写。如果客户——无论出于何种原因——更愿意在他们的数据库中将区分大小写作为默认设置,那么不同机器上的比较会有所不同。

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

最后,最好有一致的软件用于调试、维护和支持。如果特定客户需要不同格式的数据,则为该客户定制系统。

于 2012-07-20T14:09:45.533 回答
0

如果它与数据库的排序规则(默认值)相同,则没有必要指定排序规则。只有当您想将 F1 上的数据存储在不同的排序规则上时,您才应该执行您在示例中所做的操作

于 2012-07-20T11:53:52.603 回答