加入具有不同排序规则问题的列

时间:2009-05-10 13:17:12

标签: sql-server collation

我正在使用SQL Server 2005.我有两个表,他们使用不同的排序规则。不允许从具有不同排序规则的表中连接列,例如,不允许使用以下SQL,

select table1column1 + table2column2 from ...

我的问题是,为什么从数据库引擎设计的角度来看,不允许连接不同排序规则的两列?我不知道为什么校对会影响结果,结果只是连接字符串 - 应该足够简单而不依赖于整理...

提前谢谢, 乔治

2 个答案:

答案 0 :(得分:3)

让我们说Table1Column1SQL_Latin1_General_CP1_CI_ASTable2Column2Latin1_General_CI_AS。然后你可以这样做:

SELECT Table1Column1 + Table2Column2 COLLATE SQL_Latin1_General_CP1_CI_AS

希望这能解决您的问题:)

答案 1 :(得分:1)

行,

我认为答案很简单,设计一个使用unicode的系统要比ascii字符集困难得多。你要担心的不仅仅是字母;如果你有阿拉伯语和法语,那么如何在不同的方向读取字符串+字符串b(不是kana兼容我认为是这个术语)?

你必须为整理添加一项新工作 - 强制性 - 我的理解是强制性应该处理不同排序规则中字符串的兼容性。即它应该允许数据库引擎通过规则使得Latin1_CI_AS在某些情况下应该真正与Latin1_CI_AI兼容。

如果您有SQL 99 Spec的副本;阅读有关如何在排序规则之间操纵字符串的排序规则的强制性。 MS试图在MSDN上定义它,虽然我不确定它们与标准相比是否足够远;也许sql2010会更好......至于我对这个主题的阅读已经消失了;它仍然保留在SQL03标准上 - 我想对于前向可计算性。 SQL 99的google books entry没有关于强制性的页面,我找不到比MSDN解释更好的内容。