CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

急:请高人指点去掉 COLLATE Chinese_PRC_CI_AS 排序规则的办法

楼主unm(北极星)2005-11-03 21:41:17 在 MS-SQL Server / 基础类 提问

在生成表时,默认生产语句会带有COLLATE   Chinese_PRC_CI_AS,导致某些时候会出现问题,特别是操作系统不同的时候,现在碰到的问题是,表已经产生,如何去掉这些排序规则呢?  
  使得:  
  CREATE   TABLE   tmp1   (  
  [LastAction]   [nvarchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL    
  )   ON   [PRIMARY]  
  GO  
  变成与  
  CREATE   TABLE   tmp2   (  
  [LastAction]   [nvarchar]   (50)   NOT   NULL    
  )   ON   [PRIMARY]  
  GO  
  同样的效果呢? 问题点数:100、回复次数:8Top

1 楼wgsasd311(自强不息)回复于 2005-11-03 21:48:25 得分 10

--try  
  alter   table   temp1   lastaction   alter   column   lastaction   nvarchar(50)   not   nullTop

2 楼unm(北极星)回复于 2005-11-03 21:52:29 得分 0

再请教一下高人,这个库里好多表的字段都是的,如何一次性搞定?Top

3 楼hdhai9451(☆新人类☆)回复于 2005-11-03 21:59:40 得分 10

alter   table   tmp1     alter   column   lastaction   nvarchar(50)   not   nullTop

4 楼hdhai9451(☆新人类☆)回复于 2005-11-03 22:01:31 得分 10

如果更改表名  
   
  sp_rename   'tmp1','tmp2'  
   
  Top

5 楼NinGoo(http://www.NinGoo.net)回复于 2005-11-03 22:01:46 得分 10

使用powerdesigner之类的工具逆向工程来生成表的创建脚本Top

6 楼wgsasd311(自强不息)回复于 2005-11-03 22:19:52 得分 30

--表有两种排序(SQL和WINDOWS),你的问题只要修改WINDOWS默认排序(在区域设置里有)  
  选择   SQL   排序规则  
  使用"排序规则设置"屏幕修改默认的排序规则设置。使用"Windows   区域设置"选项匹配   Microsoft®   SQL   Server®   2000   实例中的排序规则设置。使用"SQL   排序规则"匹配与   SQL   Server   早期版本中的排序次序相兼容的设置。  
   
  Windows   区域设置  
  仅当   SQL   Server   的安装必须与   SQL   Server   2000   另一实例使用的排序规则设置匹配或必须与另一计算机的   Windows   区域设置匹配时,才需更改"Windows   区域设置"(Windows   排序规则)的默认设置。  
   
  排序规则指示器  
  请从列表中选择特定的   Windows   排序规则的名称,例如:    
   
  对于美国英语字符集使用   Latin1_General(代码页   1252)。  
   
   
  对于西班牙语的所有变体(也使用与美国英语字符集相同的字符集)使用   Modern_Spanish(代码页   1252)。  
   
   
  对于阿拉伯语的所有变体(使用阿拉伯语字符集)使用   Arabic(代码页   1256)。  
   
   
  对于日语的   Unicode   版本使用   Japanese_Unicode(代码页   932)。此版本具有与   Japanese   不同的排序次序,但二者的代码页同为   932。    
  有关更多信息,请参见   Windows   排序规则名称。  
   
  排序次序  
  选择用于选定的排序规则指示器的"排序次序"选项。二进制是最快的排序次序且区分大小写。如果选择了"二进制",则"区分大小写"、"区分重音"、"区分假名"和"区分宽度"选项不可用。有关更多信息,请参见   Windows   排序规则排序样式。  
   
  SQL   排序规则  
  "SQL   排序规则"选项用于与   Microsoft   SQL   Server   的早期版本兼容。选择该选项以便与   SQL   Server   7.0   版、SQL   Server   6.5   版或更早版本兼容的设置匹配。有关更多信息,请参见   SQL   排序规则。  
   
  Top

7 楼unm(北极星)回复于 2005-11-03 23:28:58 得分 0

默认的  
  CREATE   TABLE   tmp2   (  
  [LastAction]   [nvarchar]   (50)   NOT   NULL    
  )   ON   [PRIMARY]  
  是什么排序规则呢?  
  现在是这样的情况:服务器是繁体的系统,每次创建表的时候,我都   把COLLATE   Chinese_PRC_CI_AS   去掉的,但是另一个库没有去掉,现在也已经有一些数据了,现在怎么最快捷的方式改变成无COLLATE   Chinese_PRC_CI_AS   的状态呢?   现在存入数据有乱码  
   
  请问:wgsasd311(自强不息)   ,有什么办法可以解决我现在这种情况呢?Top

8 楼QQMagicer(在IT的路上越走越远)回复于 2005-11-04 09:23:39 得分 30

--请看如下文件,批量修改排序规则,是没法实现的  
   
  更改排序规则  
  可使用   ALTER   TABLE   语句更改列的排序规则:  
   
  CREATE   TABLE   MyTable  
      (PrimaryKey       int   PRIMARY   KEY,  
        CharCol             varchar(10)   COLLATE   French_CI_AS   NOT   NULL  
      )  
  GO  
  ALTER   TABLE   MyTable   ALTER   COLUMN   CharCol  
                          varchar(10)COLLATE   Latin1_General_CI_AS   NOT   NULL  
  GO  
   
  不能更改正由以下对象引用的列的排序规则:    
   
  计算列。  
   
   
  索引。  
   
   
  自动生成或由   CREATE   STATISTICS   语句生成的分发统计。  
   
   
  CHECK   约束。  
   
   
  FOREIGN   KEY   约束。    
  还可在   ALTER   DATABASE   上使用   COLLATE   子句来更改数据库的默认排序规则:  
   
  ALTER   DATABASE   MyDatabase   COLLATE   French_CI_AS  
   
  更改数据库的默认排序规则不会更改任何现有用户定义表中的列排序规则。可使用   ALTER   TABLE   更改列的排序规则。在   ALTER   DATABASE   语句上使用   COLLATE   CLAUSE   可以:    
   
  更改数据库的默认排序规则。新的默认排序规则适用于随后创建在数据库中的所有列、用户定义数据类型、变量和参数。在数据库中定义的对象上解析   SQL   语句中指定的对象标识符时,也使用新的默认排序规则。  
   
   
  将系统表中的任何   char、varchar、text、nchar、nvarchar   或   ntext   列更改为使用新的排序规则。  
   
   
  将存储过程和用户定义函数的所有现有的   char、varchar、text、nchar、nvarchar   或   ntext   参数和标量返回值更改为使用新的排序规则。  
   
   
  将   char、varchar、text、nchar、nvarchar   或   ntext   系统数据类型,以及基于这些系统数据类型的所有用户定义数据类型更改为使用新的默认排序规则。    
  为列或数据库以外的任何其它对象指派了排序规则后,将不能更改排序规则,除非除去并重新创建对象。这一操作将十分复杂。若要更改   Microsoft®   SQL   Server™   2000   实例的默认排序规则,必须:    
   
  确保具有重新创建用户数据库及数据库中的所有对象所需的全部信息或脚本。  
   
   
  使用工具(如大容量复制)导出所有数据。  
   
   
  除去所有用户数据库。  
   
   
  重建   master   数据库并指定新的排序规则。  
   
   
  创建所有数据库及数据库中的所有对象。  
   
   
  导入所有数据。    
   
   
  说明     也可以不更改   SQL   Server   2000   实例的默认排序规则,而为创建的每个新数据库指定默认排序规则。  
   
  Top

相关问题

  • COLLATE Chinese_PRC_CI_AS NULL
  • 排序规则问题 SQL_Latin1_General_CP1_CI_AI <-> Chinese_PRC_CI_AS
  • 排序,排序
  • 请问在生成SQL脚本时,如何得到表记录,并去掉COLLATE Chinese_PRC_CI_AS等?
  • 排序
  • 排序
  • 排序
  • 排序
  • 排序。
  • 关于排序?

关键词

  • sql server 2000
  • 排序
  • 数据库
  • 语句
  • 字符集
  • 数据
  • 代码
  • 选项
  • 规则
  • 默认

得分解答快速导航

  • 帖主:unm
  • wgsasd311
  • hdhai9451
  • hdhai9451
  • NinGoo
  • wgsasd311
  • QQMagicer

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo