0

我读了很多关于“选择正确的排序规则”和类似的东西,但我仍然没有解决以下问题:

我们得到了以下星座:我们将应用程序的数据库从 Advantage Database 切换到 MsSQL Server 2014。

所有数据库都具有相同的排序规则“Latin1_General_CI_AS”(ReportServer 和 ReportServerTempDB 除外)。我们之所以选择这种排序规则,是因为“Latin1_General_CS_AS”会对我们现有的查询产生很大影响,因为查询中的表名会更改为区分大小写。

为了保留查询的数据顺序,我们使用“Latin1_General_CS_AS”创建了字符串列。

我们实际遇到的问题是,由于排序规则冲突,对临时表进行连接的查询会失败。我很清楚,TempDB 表具有“Latin1_General_CI_AS”作为排序规则,并在与物理表的字符串列连接时引发错误。

如果可以构建不区分大小写的查询而不考虑数据库排序规则,我们就可以解决我们的问题。

反过来,我们可以通过将数据库的排序规则更改为“Latin1_General_CS_AS”并将查询中的所有表名更正为与原始表名相同来解决问题。

如果我想到的第一个解决方案是不可能的,有人对如何解决排序问题有好的建议吗?

第二种解决方案实际上是不可行的。我们从不关心大小写,只是有太多的数据库交互,因为它值得纠正这一切。

我们的问题可能有第三种或第四种解决方案吗?

Thx 4 提前帮助。

4

1 回答 1

0

要强制排序规则最大化,您可以使用 COLLATE 语句,请参阅:https ://msdn.microsoft.com/en-us/library/ms184391.aspx

SELECT
a.col1,b.col2
FROM 
table a join table b 
ON  a.col1 collate databse_default = b.col2 collate databse_default
于 2015-12-02T11:34:23.677 回答