在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.sp_helpsort 复制代码 代码如下: alter database dbname collate Chinese_PRC_CI_AS 2. --1. 为数据库指定排序规则 复制代码 代码如下: CREATE DATABASE db COLLATE Chinese_PRC_CI_AS GO ALTER DATABASE db COLLATE Chinese_PRC_BIN GO /*====================================*/ --2. 为表中的列指定排序规则 复制代码 代码如下: CREATE TABLE tb( col1 varchar(10), col2 varchar(10) COLLATE Chinese_PRC_CI_AS) GO ALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN GO ALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN GO /*====================================*/ --3. 为字符变量和参数应用排序规则 复制代码 代码如下: DECLARE @a varchar(10),@b varchar(10) SELECT @a='a',@b='A' --使用排序规则 Chinese_PRC_CI_AS SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END --结果:@a=@b --使用排序规则 Chinese_PRC_BIN SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END --结果:@a<>@b 3. 表 复制代码 代码如下: ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS --不区分大小写 ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS --区分大小写 数据库 复制代码 代码如下: ALTER DATABASE database COLLATE Chinese_PRC_CS_AS --区分大小写 ALTER DATABASE database COLLATE Chinese_PRC_CI_AS --不区分大小写 方法一.安装SQL时选择区分大小写 或安装完以后重建mastar,选择区分大小 C:\Program Files\Microsoft SQL Server\80\Tools\Binn\rebuildm.exe 方法二.sql server 8.0以上的版本才可以,7.0及其以下不支持 alter database 数据库 COLLATE Chinese_PRC_CS_AS 修改排序规则,改成大小写敏感的排序规则 如果只修改一个表,用alter table语句 如果修改一个库的默认排序规则,用alter datebase语句 如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库 --指定排序规则就可以了 --示例 复制代码 代码如下: select replace('AbacB' collate Chinese_PRC_CS_AS_WS,'B','test') --如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了 --示例 复制代码 代码如下: create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS) insert tb values('Abac') select replace(a,'a','test') from tb drop table tb 指定排序规则即可 Windows 排序规则名称在 COLLATE 子句中指定 Windows 排序规则名称。Windows 排序规则名称由排序规则指示器和比较风格构成。 语法 复制代码 代码如下: < Windows_collation_name > :: = CollationDesignator_ <ComparisonStyle> < ComparisonStyle > ::= CaseSensitivity_AccentSensitivity [_KanatypeSensitive [_WidthSensitive ] ] | _BIN 参数 CollationDesignator 指定 Windows 排序规则使用的基本排序规则。基本排序规则包括: 当指定按字典排序时应用其排序规则的字母表或语言 用于存储非 Unicode 字符数据的代码页。 例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254。 CaseSensitivity CI 指定不区分大小写,CS 指定区分大小写。 AccentSensitivity AI 指定不区分重音,AS 指定区分重音。 KanatypeSensitive Omitted 指定不区分大小写,KS 指定区分假名类型。 WidthSensitivity Omitted 指定不区分大小写,WS 指定区分大小写。 BIN 指定使用二进制排序次序。 如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询: select * from a /* a_nam a_add ---------- ---------- 1 aa 1 bb 2 cc 2 vv 2 kk 3 dd 3 ee 4 dd 5 ee 6 yy 6 yy (11 row(s) affected) */ 现在我们查询a_add = 'aa'的,'Aa'等等不行! Example 1: 复制代码 代码如下: select * from a where a_add collate Chinese_PRC_CS_AS_WS = 'aa' /* a_nam a_add ---------- ---------- 1 aa (1 row(s) affected) */ Example 2: 复制代码 代码如下: select * from a where a_add collate Chinese_PRC_CS_AS_WS = 'Aa' /* a_nam a_add ---------- ---------- (0 row(s) affected) */ Example 3.上面的记不住,那么就用最笨的方法,转化为ascii 复制代码 代码如下: select * from a where ascii(substring(a_add,1,1)) = ascii(substring('Aa',1,1)) and ascii(substring(a_add,2,1)) = ascii(substring('Aa',2,1)) /* a_nam a_add ---------- ---------- (0 row(s) affected) */ Example 4:任何版本都可以 复制代码 代码如下: select * from a where cast(a_add as varbinary(10))= cast('aa' as varbinary(10)) |
请发表评论