如何修改数据库的服务器排序规则

如何修改数据库的服务器排序规则


一只名叫tom的猫
浏览 467回答 2
2回答

临摹微笑

您好,很高兴为您解答。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262271.sp_helpsort&nbsp;SELECT&nbsp;SERVERPROPERTY&nbsp;('Collation')&nbsp;查看你的排序规则.&nbsp;不过你的这个应该和字符集有关.&nbsp;&nbsp;2.更改服务器排序规则&nbsp;更改&nbsp;SQL&nbsp;Server&nbsp;2005&nbsp;实例的默认排序规则的操作可能会比较复杂,包括以下步骤:&nbsp;&nbsp;&nbsp;确保具有重新创建用户数据库及这些数据库中的所有对象所需的全部信息或脚本。&nbsp;使用工具(例如大容量复制)导出所有数据。删除所有用户数据库。&nbsp;重新生成在&nbsp;setup&nbsp;命令的&nbsp;SQLCOLLATION&nbsp;属性中指定新的排序规则的&nbsp;master&nbsp;数据库。例如:&nbsp;复制代码&nbsp;start&nbsp;/wait&nbsp;setup.exe&nbsp;/qb&nbsp;INSTANCENAME=MSSQLSERVER&nbsp;REINSTALL=SQL_Engine&nbsp;REBUILDDATABASE=1&nbsp;SAPWD=test&nbsp;SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI&nbsp;有关重新生成&nbsp;master&nbsp;数据库的详细信息,请参阅如何重新生成&nbsp;SQL&nbsp;Server&nbsp;2005&nbsp;的&nbsp;Master&nbsp;数据库。&nbsp;创建所有数据库及这些数据库中的所有对象。&nbsp;导入所有数据。&nbsp;注意:&nbsp;&nbsp;可以为创建的每个新数据库指定默认排序规则,而不更改&nbsp;SQL&nbsp;Server&nbsp;2005&nbsp;实例的默认排序规则。&nbsp;&nbsp;&nbsp;3.设置和更改数据库排序规则&nbsp;创建新数据库时,可以使用下列内容之一指定排序规则:&nbsp;CREATE&nbsp;DATABASE&nbsp;语句的&nbsp;COLLATE&nbsp;子句。&nbsp;SQL&nbsp;Server&nbsp;Management&nbsp;Studio.&nbsp;SQL&nbsp;管理对象&nbsp;(SMO)&nbsp;中的&nbsp;Database.Collation&nbsp;属性。&nbsp;如果未指定排序规则,则使用服务器排序规则。&nbsp;可以使用&nbsp;ALTER&nbsp;DATABASE&nbsp;语句的&nbsp;COLLATE&nbsp;子句来更改在用户数据库中创建的任何新对象的排序规则。使用此语句不能更改任何现有用户定义的表中列的排序规则。使用&nbsp;ALTER&nbsp;TABLE&nbsp;的&nbsp;COLLATE&nbsp;子句可以更改这些列的排序规则。&nbsp;更改数据库排序规则时,需要更改下列内容:&nbsp;数据库的默认排序规则,这一新的默认排序规则将应用于数据库中后续创建的所有列、用户定义的数据类型、变量和参数。根据数据库中定义的对象解析&nbsp;SQL&nbsp;语句中指定的对象标识符时,也使用新的默认排序规则。&nbsp;将系统表中的任何&nbsp;char、varchar、text、nchar、nvarchar&nbsp;或&nbsp;ntext&nbsp;列更改为使用新的排序规则。&nbsp;将存储过程和用户定义函数的所有现有&nbsp;char、varchar、text、nchar、nvarchar&nbsp;或&nbsp;ntext&nbsp;参数和标量返回值更改为使用新的排序规则。&nbsp;将&nbsp;char、varchar、text、nchar、nvarchar&nbsp;或&nbsp;ntext&nbsp;系统数据类型和基于这些系统数据类型的所有用户定义的数据类型更改为使用新的默认排序规则。&nbsp;&nbsp;&nbsp;SQL&nbsp;code&nbsp;:&nbsp;&nbsp;1.将数据库的字符集修改为:alter&nbsp;database&nbsp;dbname&nbsp;collate&nbsp;Chinese_PRC_CI_AS&nbsp;&nbsp;2.&nbsp;&nbsp;--1.&nbsp;为数据库指定排序规则CREATE&nbsp;DATABASE&nbsp;db&nbsp;COLLATE&nbsp;Chinese_PRC_CI_ASGO&nbsp;&nbsp;ALTER&nbsp;DATABASE&nbsp;db&nbsp;COLLATE&nbsp;Chinese_PRC_BINGO&nbsp;&nbsp;&nbsp;&nbsp;/*====================================*/&nbsp;&nbsp;&nbsp;&nbsp;--2.&nbsp;为表中的列指定排序规则CREATE&nbsp;TABLE&nbsp;tb(col1&nbsp;varchar(10),col2&nbsp;varchar(10)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS)GO&nbsp;&nbsp;ALTER&nbsp;TABLE&nbsp;tb&nbsp;ADD&nbsp;col3&nbsp;varchar(10)&nbsp;COLLATE&nbsp;Chinese_PRC_BINGO&nbsp;&nbsp;ALTER&nbsp;TABLE&nbsp;tb&nbsp;ALTER&nbsp;COLUMN&nbsp;col2&nbsp;varchar(10)&nbsp;COLLATE&nbsp;Chinese_PRC_BINGO&nbsp;&nbsp;&nbsp;&nbsp;/*====================================*/&nbsp;&nbsp;&nbsp;&nbsp;--3.&nbsp;为字符变量和参数应用排序规则DECLARE&nbsp;@a&nbsp;varchar(10),@b&nbsp;varchar(10)SELECT&nbsp;@a='a',@b='A'&nbsp;&nbsp;--使用排序规则&nbsp;Chinese_PRC_CI_ASSELECT&nbsp;CASE&nbsp;WHEN&nbsp;@a&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;=&nbsp;@b&nbsp;THEN&nbsp;'@a=@b'&nbsp;ELSE&nbsp;'@a<>@b'&nbsp;END--结果:@a=@b&nbsp;&nbsp;--使用排序规则&nbsp;Chinese_PRC_BINSELECT&nbsp;CASE&nbsp;WHEN&nbsp;@a&nbsp;COLLATE&nbsp;Chinese_PRC_BIN&nbsp;=&nbsp;@b&nbsp;THEN&nbsp;'@a=@b'&nbsp;ELSE&nbsp;'@a<>@b'&nbsp;END--结果:@a<>@b&nbsp;&nbsp;&nbsp;&nbsp;3.表ALTER&nbsp;&nbsp;&nbsp;TABLE&nbsp;&nbsp;&nbsp;tb&nbsp;&nbsp;ALTER&nbsp;&nbsp;&nbsp;COLUMN&nbsp;&nbsp;&nbsp;colname&nbsp;&nbsp;&nbsp;nvarchar(100)&nbsp;&nbsp;&nbsp;COLLATE&nbsp;&nbsp;&nbsp;Chinese_PRC_CI_AS&nbsp;&nbsp;--不区分大小写ALTER&nbsp;&nbsp;&nbsp;TABLE&nbsp;&nbsp;&nbsp;tb&nbsp;&nbsp;&nbsp;&nbsp;ALTER&nbsp;&nbsp;&nbsp;COLUMN&nbsp;&nbsp;&nbsp;colname&nbsp;&nbsp;&nbsp;nvarchar(100)&nbsp;&nbsp;&nbsp;COLLATE&nbsp;&nbsp;&nbsp;Chinese_PRC_CS_AS&nbsp;&nbsp;--区分大小写数据库ALTER&nbsp;&nbsp;&nbsp;DATABASE&nbsp;&nbsp;&nbsp;database&nbsp;&nbsp;COLLATE&nbsp;&nbsp;&nbsp;Chinese_PRC_CS_AS&nbsp;&nbsp;--区分大小写&nbsp;&nbsp;ALTER&nbsp;&nbsp;&nbsp;DATABASE&nbsp;&nbsp;&nbsp;database&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;--不区分大小写&nbsp;&nbsp;&nbsp;&nbsp;方法一.安装SQL时选择区分大小写或安装完以后重建mastar,选择区分大小C:\Program&nbsp;&nbsp;&nbsp;Files\Microsoft&nbsp;&nbsp;&nbsp;SQL&nbsp;&nbsp;&nbsp;Server\80\Tools\Binn\rebuildm.exe&nbsp;&nbsp;方法二.sql&nbsp;&nbsp;&nbsp;server&nbsp;&nbsp;&nbsp;8.0以上的版本才可以,7.0及其以下不支持alter&nbsp;&nbsp;&nbsp;database&nbsp;&nbsp;&nbsp;数据库&nbsp;&nbsp;&nbsp;COLLATE&nbsp;&nbsp;&nbsp;Chinese_PRC_CS_AS修改排序规则,改成大小写敏感的排序规则如果只修改一个表,用alter&nbsp;&nbsp;&nbsp;table语句&nbsp;&nbsp;如果修改一个库的默认排序规则,用alter&nbsp;&nbsp;&nbsp;datebase语句&nbsp;&nbsp;如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库&nbsp;&nbsp;--指定排序规则就可以了&nbsp;&nbsp;--示例&nbsp;&nbsp;select&nbsp;&nbsp;&nbsp;replace('AbacB'&nbsp;&nbsp;&nbsp;collate&nbsp;&nbsp;&nbsp;Chinese_PRC_CS_AS_WS,'B','test')&nbsp;&nbsp;&nbsp;&nbsp;--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了&nbsp;&nbsp;&nbsp;&nbsp;--示例&nbsp;&nbsp;create&nbsp;&nbsp;&nbsp;table&nbsp;&nbsp;&nbsp;tb(a&nbsp;&nbsp;&nbsp;varchar(20)&nbsp;&nbsp;&nbsp;collate&nbsp;&nbsp;&nbsp;Chinese_PRC_CS_AS_WS)&nbsp;&nbsp;insert&nbsp;&nbsp;&nbsp;tb&nbsp;&nbsp;&nbsp;values('Abac')&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;&nbsp;&nbsp;replace(a,'a','test')&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;tb&nbsp;&nbsp;drop&nbsp;&nbsp;&nbsp;table&nbsp;&nbsp;&nbsp;tb&nbsp;&nbsp;指定排序规则即可&nbsp;&nbsp;Windows&nbsp;&nbsp;&nbsp;排序规则名称&nbsp;&nbsp;在&nbsp;&nbsp;&nbsp;COLLATE&nbsp;&nbsp;&nbsp;子句中指定&nbsp;&nbsp;&nbsp;Windows&nbsp;&nbsp;&nbsp;排序规则名称。Windows&nbsp;&nbsp;&nbsp;排序规则名称由排序规则指示器和比较风格构成。&nbsp;&nbsp;&nbsp;&nbsp;语法&nbsp;&nbsp;<&nbsp;&nbsp;&nbsp;Windows_collation_name&nbsp;&nbsp;&nbsp;>&nbsp;&nbsp;&nbsp;::&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CollationDesignator_&nbsp;<ComparisonStyle>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<&nbsp;&nbsp;&nbsp;ComparisonStyle&nbsp;&nbsp;&nbsp;>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CaseSensitivity_AccentSensitivity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[_KanatypeSensitive&nbsp;&nbsp;&nbsp;[_WidthSensitive&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;¦&nbsp;&nbsp;&nbsp;_BIN&nbsp;&nbsp;&nbsp;&nbsp;参数&nbsp;&nbsp;CollationDesignator&nbsp;&nbsp;&nbsp;&nbsp;指定&nbsp;&nbsp;&nbsp;Windows&nbsp;&nbsp;&nbsp;排序规则使用的基本排序规则。基本排序规则包括:&nbsp;&nbsp;&nbsp;&nbsp;当指定按字典排序时应用其排序规则的字母表或语言&nbsp;&nbsp;&nbsp;&nbsp;用于存储非&nbsp;&nbsp;&nbsp;Unicode&nbsp;&nbsp;&nbsp;字符数据的代码页。&nbsp;&nbsp;例如&nbsp;&nbsp;&nbsp;Latin1_General&nbsp;&nbsp;&nbsp;或法文,两者都使用代码页&nbsp;&nbsp;&nbsp;1252,或土耳其文,它使用代码页&nbsp;&nbsp;&nbsp;1254。&nbsp;&nbsp;&nbsp;&nbsp;CaseSensitivity&nbsp;&nbsp;CI&nbsp;&nbsp;&nbsp;指定不区分大小写,CS&nbsp;&nbsp;&nbsp;指定区分大小写。&nbsp;&nbsp;AccentSensitivity&nbsp;&nbsp;AI&nbsp;&nbsp;&nbsp;指定不区分重音,AS&nbsp;&nbsp;&nbsp;指定区分重音。&nbsp;&nbsp;KanatypeSensitive&nbsp;&nbsp;Omitted&nbsp;&nbsp;&nbsp;指定不区分大小写,KS&nbsp;&nbsp;&nbsp;指定区分假名类型。&nbsp;&nbsp;WidthSensitivity&nbsp;&nbsp;Omitted&nbsp;&nbsp;&nbsp;指定不区分大小写,WS&nbsp;&nbsp;&nbsp;指定区分大小写。&nbsp;&nbsp;BIN&nbsp;&nbsp;指定使用二进制排序次序。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:select&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;a&nbsp;&nbsp;/*a_nam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a_add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bb2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vv2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kk3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ee4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ee6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yy6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yy&nbsp;&nbsp;(11&nbsp;&nbsp;&nbsp;row(s)&nbsp;&nbsp;&nbsp;affected)*/现在我们查询a_add&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;'aa'的,'Aa'等等不行!Example&nbsp;&nbsp;&nbsp;1:&nbsp;&nbsp;select&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;a&nbsp;&nbsp;where&nbsp;&nbsp;&nbsp;a_add&nbsp;&nbsp;&nbsp;collate&nbsp;&nbsp;&nbsp;Chinese_PRC_CS_AS_WS&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;'aa'&nbsp;&nbsp;/*a_nam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a_add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa&nbsp;&nbsp;(1&nbsp;&nbsp;&nbsp;row(s)&nbsp;&nbsp;&nbsp;affected)*/&nbsp;&nbsp;Example&nbsp;&nbsp;&nbsp;2:&nbsp;&nbsp;select&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;a&nbsp;&nbsp;where&nbsp;&nbsp;&nbsp;a_add&nbsp;&nbsp;&nbsp;collate&nbsp;&nbsp;&nbsp;Chinese_PRC_CS_AS_WS&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;'Aa'&nbsp;&nbsp;/*a_nam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a_add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&nbsp;&nbsp;row(s)&nbsp;&nbsp;&nbsp;affected)*/&nbsp;&nbsp;方法三.上面的记不住,那么就用最笨的方法,转化为asciiselect&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;awhere&nbsp;&nbsp;ascii(substring(a_add,1,1))&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;ascii(substring('Aa',1,1))and&nbsp;&nbsp;ascii(substring(a_add,2,1))&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;ascii(substring('Aa',2,1))/*a_nam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a_add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&nbsp;&nbsp;row(s)&nbsp;&nbsp;&nbsp;affected)*/&nbsp;&nbsp;方法三:任何版本都可以select&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;a&nbsp;&nbsp;where&nbsp;&nbsp;&nbsp;cast(a_add&nbsp;&nbsp;&nbsp;as&nbsp;&nbsp;&nbsp;varbinary(10))=&nbsp;&nbsp;&nbsp;cast('aa'&nbsp;&nbsp;&nbsp;as&nbsp;&nbsp;&nbsp;varbinary(10))&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL