在写sql的询问时 如下:

这几天测量试验Job时,在SQL中冒出了个 “不能够缓和 equal to
操作的排序法则冲突”,百度了一下,才察觉是五个表之间成分创设时排序法则各异,八个是collate
Chinese_PRC_CI_AI_WS,一个为COLLATE
SQL_Latin1_General_CP1_CI_AS。

 select * from Users where username=’WangE’

顺手援引下随笔作参照他事他说加以调查:“无法缓和 equal to
操作的排序准则冲突。”的荒谬分析和解决方法

 select * from Users where username=’wange’

SQL SE酷路泽VEQX56的排序准则平常使用不是贪滥无厌,只怕不少初读书人还相比较目生,但有
贰个不当我们应是时常遇上: SQL
SEPAJEROVE昂Cora数据库,在跨库多表连接查询时,若两数额
库默许字符集不一样,系统就能够回到那样的不当:

地方两条查询语句的结果是如出生龙活虎辙的,那评释username的尺码并从未分别抑扬顿挫写。

“不可能缓和 equal to 操作的排序法则冲突。”

 

黄金时代.谬误分析:
  那一个张冠李戴是因为排序法规不相符引致的,我们做个测量检验,举例:
create table #t1(
name varchar(20) collate Albanian_CI_AI_WS,
value int)

若要使用方面包车型地铁的讲话能够实行按界别抑扬顿挫写查询 必要在询问的尾声加上
collate Chinese_PRC_CS_AI_WS

create table #t2(
name varchar(20) collate Chinese_PRC_CI_AI_WS,
value int )

完全语句是:

表建好后,试行连接查询:

select * from Users where username=’WangE’ collate
Chinese_PRC_CS_AI_WS

select * from #t1 A inner join #t2 B on A.name=B.name

这么,错误就涌出了:

服务器: 消息 446,级别 16,状态 9,行 1
不能消除 equal to 操作的排序法则冲突。
  要扫除这一个荒谬,最简便方法是,表连接时钦定它的排序准绳,那样错误就
不再次出现身了。语句那样写:

select *
from #t1 A inner join #t2 B
on A.name=B.name collate Chinese_PRC_CI_AI_WS

二.排序准绳简要介绍:

怎样叫排序准则吧?MS是如此呈报的:”在 Microsoft SQL Server 二〇〇四 中,
字符串的大意存储由排序法规调控。排序法则钦命表示各个字符的位形式以致存
储和比较字符所使用的准则。”
  在询问深入分析器内施行下边语句,能够收获SQL SELANDVEENCORE帮助的装有排序法规。

    select * from ::fn_helpcollations()

排序准则名称由两部份构成,前半部份是指本排序准则所支撑的字符集。
如:
  Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指南针对陆上简体字UNICODE的排序准绳。
排序法则的后半部份即后缀 含义:
  _BIN 二进制排序
  _CI(CS) 是不是区分轻重缓急写,CI不区分,CS区分
  _AI(AS) 是或不是区分重音,AI不区分,AS区分   
  _KI(KS) 是不是区分假名类型,KI不区分,KS区分 
_WI(WS) 是不是区分宽度 WI不区分,WS区分 

区分朗朗上口写:倘若想让相比将大写字母和小写字母视为不等,请选取该选项。
分化重音:纵然想让比较将重音和非重音字母视为不等,请选取该选项。若是接纳该选取,
相比较还将重音分化的假名视为不等。
分化假名:倘诺想让相比较将片假名和平假名德文音节视为不等,请选用该选项。
分别宽度:如若想让相比较将半角字符和全角字符视为不等,请采取该采纳

三.排序准则的利用:
  SQL
SE奥迪Q3VE陆风X8提供了汪洋的WINDOWS和SQLSESportageVEOdyssey专用的排序准则,但它的行使往往
被开垦职员所忽略。其实它在实施中大有用场。

  例1:让表NAME列的内容按拼音排序:

create table #t(id int,name varchar(20))
insert #t select 1,’中’
union all select 2,’国’
union all select 3,’人’
union all select 4,’阿’

select * from #t order by name collate Chinese_PRC_CS_AS_KS_WS
drop table #t
/*结果:
id name


4 阿
2 国
3 人
1 中
*/

  例2:让表NAME列的内容按姓氏笔划排序:

网站地图xml地图