SQL Server字符串比较时区别大小写方法

上一篇 / 下一篇  2012-08-14 10:49:26 / 个人分类:数据库

51Testing软件测试网 Z^1HEc

  在SQLServer中默认对大小写是不敏感的,例如userName='jesse'和userName='JESSE'结果是一样的。在验证密码的时候可能就需要对字符串大小写敏感,需要做一些处理,介绍两种方法:51Testing软件测试网 h ~R)j+? B^

_ Q+~ {%y0  法Ⅰ:转换成二进制再比较,由于大小写的ASC码不同。例如:51Testing软件测试网 Q3| t$HE.HX jx

select   *51Testing软件测试网A)C6MC*] ?y8M2H
from   T_User
-x+]M7mX*[&O0where   cast(field   as   varbinary)   =   cast( 'Admin'   as   varbinary)
51Testing软件测试网f[%s5~f;_?$M

  法Ⅱ:利用排序规则,也是基于二进制。在字段后加上collate Chinese_PRC_CS_AS_WS

1`.KK"\%K/d0

kX4f(V8`;B6^3U"\;Y5G0  如:51Testing软件测试网pc$S:e,Y@6QAQ

select *
aQ^J-^bq"f"e0from T_User51Testing软件测试网 v@sSw3`w
where userName='admin' AND PASSWORD collate Chinese_PRC_CS_AS_WS ='Admin'
51Testing软件测试网 Z8nH*s%O+o `b

  是否区分大小写与排序规则有关,排序规则中各部分含义如下所示:51Testing软件测试网&m#\,uxm(Ql\0R'e;t

,r$_9lg;Doy8l4s0  举例分析 Chinese_PRC_CS_AI_WS

}e#H5mi&Z,W0

&~9y q&}8f;LPH0  前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。

5pU Z%l@Jk0

5S`#B_A5|Q-Ag0  排序规则的后半部份即后缀 含义:

+m)K&Ap#o-a@5d051Testing软件测试网:P*~S_9\ R \Z

  _BIN 二进制排序51Testing软件测试网e9pS0P[\

9wt"PK7Ku5}HW0  _CI(CS) 是否区分大小写,CI不区分,CS区分

@1^ R)S2v051Testing软件测试网 vi vE h"D@

  _AI(AS) 是否区分重音,AI不区分,AS区分51Testing软件测试网jLK#H"QF&_*j

KC(yE9}/f'W0  _KI(KS) 是否区分假名类型,KI不区分,KS区分

%B+[v(?Dog R [0

W8y:smz0  _WI(WS) 是否区分宽度 WI不区分,WS区分51Testing软件测试网:g1[r$e9P(H,G

t"j.s$ZQomg0  区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。

No1w5m'\t,n0

j!I;k9H c;g-^^0  区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字 母视为不等。51Testing软件测试网b,C'Ybn

51Testing软件测试网GyFS)AmL#X

  区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

sd!d9{9[7BE~,M H051Testing软件测试网y3H.c2px@

  区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项51Testing软件测试网]P&U1cxPt


TAG:

 

评分:0

我来说两句

Open Toolbar