SQL Server 2005 排序规则问题
Posted
技术标签:
【中文标题】SQL Server 2005 排序规则问题【英文标题】:SQL Server 2005 collation issue 【发布时间】:2010-10-25 02:22:57 【问题描述】:我有两个表,它们使用不同的排序规则。不允许将不同排序规则的表中的列连接起来,例如下面的 SQL 是不允许的,
select table1column1 + table2column2 from ...
我的问题是,如何在不破坏表数据的情况下更改表的排序规则?
提前致谢, 乔治
【问题讨论】:
【参考方案1】:如果需要,您可以随时更改列排序规则。
例如
select table1column1 collate database default + table2column2 collate database default from ...
“数据库默认值”可以是您想要使用的任何排序规则。
您可以使用
永久更改列的排序规则ALTER TABLE ... ALTER COLUMN Table1Column1
varchar(50) COLLATE Latin1_General_CI_AS NOT NULL
GO
【讨论】:
酷,一个简单的问题,为什么 SQL Server 不允许连接具有不同排序规则的表中的两列?内因是什么? 内因是排序规则不同的两个字符串本质上是不兼容的。每个字符串必须只有一个排序规则,但 SQL Server 不能简单地猜测结果应该具有哪种排序规则,因此您必须指定它。 嗯,很明显:en.wikipedia.org/wiki/Collation,从那里开始,我建议阅读有关此主题的 SQL Server 2005 联机丛书:msdn.microsoft.com/en-us/library/ms143503.aspx。我想网上还有很多东西可以找到。 简单地说,排序规则对字符串就像语言对单词一样。每个单词都完全是一种语言。您不能以任何有意义的方式连接不同语言的两个单词,您必须先翻译其中一个单词,以便它们的语言匹配。 右键单击 SSMS 中的列,它会将排序规则显示为其属性之一。在数据库属性的常规选项卡中,99% 的列与其数据库具有相同的排序规则。以上是关于SQL Server 2005 排序规则问题的主要内容,如果未能解决你的问题,请参考以下文章