欢迎来到天天文库
浏览记录
ID:9429375
大小:53.50 KB
页数:5页
时间:2018-04-30
《sqlserver数据库简体繁体数据混用的问题》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、SQLServer数据库简体繁体数据混用的问题>>教育资源库 这篇论坛文章着重介绍了SQLServer数据库简体繁体数据混用的问题,详细内容请参考下文: 我现在要说的是一个在简体繁体数据混用的时候很容易发生的问题,但是这个问题也很容易被大家忽略。具体来说,这个问题会在所有采用不同排序规则的数据实例间关联数据的时候发生。也许我这么说大家还是弄不清楚到底是怎么回事儿,我先来讲一下我今天碰到的问题。 公司里面使用的数据库会有简体中文和繁体中文两种版本。我现在这个专案使用的SQLServer是繁体中文版的,但是需要使用到另一个使用简
2、体中文版SQLServer专案的数据,我按照通常的做法把简体中文版SQLServer中的一个数据表导入到现在使用的繁体中文版SQLServer中,结构和数据都导入成功了。我一开始并没有意识到这样做会有什么问题。接下来我开始调试SQL语句,其实是一个很简单的两表关联数据选择大致如下: selecttable1.*,table2.* fromtable1 innerjointable2ontable2.FK=table1.PK 照理说这么简单的语句没道理会出什么问题,不过在查询分析器里面始终提示如下的错误 服务器:消息446
3、,级别16,状态9,行1 無法解析equalto動作的定序衝突。 后来搜索了一下,然后又看了一下T-SQL的帮助,才知道原来是因为我将简体中文SQLServer中的数据表导入到繁体中文的数据表中的是后,连同原数据的排序方式一并导入,导致了简体数据表的排序方式依然是简体,所以无法进行比较,从而出错。解决的办法是指名排序方式,告诉查询分析器应该怎样排序即可。这里会需要用到一个关键字COLLATEColiate在SQLServer联机丛书中是这样解释的: COLLATE 一个子句,可应用于数据库定义或列定义以定义排序规则,或应用
4、于字符串表达式以应用排序规则投影。 语法: COLLATE<collation_name> <collation_name>::= {Table1 INNERJOINTable2ONTable2.FK=Table1.PKCOLLATEChinese_Taiicrosoft®SQLServer™2000支持多种排序规则。排序规则对控制正确使用语言(如马其顿语或波兰语)或字母表(如西欧语言使用的拉丁字母表Latin1_General)字符的规则进行编码。 每个SQLServer排
5、序规则指定三个属性: 用于Unicode数据类型(nchar、nvarchar和ntext)的排序次序。排序次序定义字符的排序序列,以及在比较操作中对字符取值的方法。 用于非Unicode字符数据类型(char、varchar和text)的排序次序。 用于存储非Unicode字符数据的代码页。 说明不能指定与Unicode数据类型(nchar、nvarchar和ntext)对应的代码页。用于Unicode字符的双字节位模式由Unicode标准定义且不能更改。 可在任何级别上指定SQLServer2000排序规则。安装SQ
6、LServer2000实例时,可指定该实例的默认排序规则。每次创建数据库时,可指定用于该数据库的默认排序规则。如果未指定排序规则,数据库的默认排序规则即是实例的默认排序规则。无论何时定义字符列、变量或参数,都可指定这些对象的排序规则。如果未指定排序规则,将使用数据库的默认排序规则创建这些对象。 如果SQLServer实例的所有用户都使用同一种语言,则应选择支持该语言的排序规则。例如,若所有用户都讲法语,则选择法语排序规则。 如果SQLServer实例的用户使用多种语言,则应选择能对多语种需求提供最佳支持的排序规则。例如,如果用
7、户一般都讲西欧语言,则选择Latin1_General排序规则。当支持使用多种语言的用户时,对所有字符数据都使用Unicode12下一页>>>>这篇文章来自..,。数据类型nchar、nvarchar和ntext最为重要。Unicode旨在消除非Unicodechar、varchar和text数据类型的代码页转换困难。因为排序规则定义用于比较操作的排序次序和Unicode字符的排序,所以当用Unicode数据类型实现所有的列时,排序规则仍会产生不同。即使当使用Unicode数据类型存储字符数据时,也应选择支持大多数用户的排序规则,
8、以防使用非Unicode数据类型实现列或变量。 SQLServer排序规则定义数据库引擎存储和操作字符及Unicode数据的方式。然而,当数据移入应用程序后,在应用程序中进行的字符排序和比较将由计算机上选定的SDN®页中的Developi
此文档下载收益归作者所有