当前位置:  数据库>sqlserver

sql数据库中排序规则问题

    来源: 互联网  发布时间:2014-08-29

    本文导语:  sql server的排序规则,有一个错误: sql server数据库,在跨库多表连接查询时,若两数据 库默认字符集不同,系统就会返回这样的错误: “无法解决 equal to 操作的排序规则冲突。” 一,错误分析: 这个错误是因为排序规则不一...

sql server的排序规则,有一个错误: sql server数据库,在跨库多表连接查询时,若两数据 库默认字符集不同,系统就会返回这样的错误: “无法解决 equal to 操作的排序规则冲突。”

一,错误分析:
这个错误是因为排序规则不一致造成的,做个测试,sql语句如下:
 

代码示例:

create table #t1(
name varchar(20) collate Albanian_CI_AI_WS, 
value int)

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

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

代码示例:
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

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

--加上collate Chinese_PRC_CI_AI_WS

二,sql数据库 排序规则简介:
什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server 2000 中, 字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。"
在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。 (推荐阅读:sql语句大全)
 

代码示例:
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区分 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项, 比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项


    
 
 

您可能感兴趣的文章:

  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • SQL分组排序去除重复实例
  • 有关sql server的排序问题
  • Oracle 中文字段进行排序的sql语句
  • 大家讨论一下EJB QL的功能,和标准SQL相比,缺少什么功能?比如排序功能等。
  • sql分组查询(按组内个数排序)
  • SQL-ORDER BY 多字段排序(升序、降序)
  • SQL分组排序去重复的小实例
  • sql查询表中根据某列排序的任意行语句
  • sql server分组排序之row_number()over函数的使用
  • sql中获取分组排序后数据方法实例
  • 在sql中不指定Order by排序是按照主键吗
  • sql Server使用ROW_NUMBER时不排序的实例代码
  • sql多条件多字段排序(图文教程)
  • sql语句获取分组排序后数据
  • sql union查询与排序的例子
  • SQL字符型字段按数字型字段排序实现方法
  • sql语句排序子句order by用法实例
  • sql获取分组排序后数据的脚本
  • sql server分组查询与排序的例子
  • 教你如何在MySQL命令行中使用SQL语句的规则
  • 如何更改sql server 2005数据库排序规则
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • SQL Server数据库的修复SQL语句
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • 查询SQL Server中所有数据库的数据文件位置的sql脚本
  • 取数据库前几条数据(sql server、oracle、mysql)的sql写法
  • 使用php语句将数据库*.sql文件导入数据库
  • SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句
  • 请问Linux数据库编程是否也可以支持通用的SQL语言进行数据库编写.
  • sql数据库多用户模式修改方法
  • sql数据库如何查询修改数据库恢复模式?
  • 数据库前端 SQL Workbench-J
  • 在Java中以MS SQL2000为后端数据库?
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Java 数据库工具类库 sql2o
  • Linux下能装SQL server 2000数据库吗? iis7站长之家
  • sql语句获取数据库服务器上所有数据库的名字
  • Linux下能装SQL server 2000数据库吗?
  • linux中把a.sql文件还原数据库a,在线等
  • 谁用过sql server 2000?做jsp的数据库服务器?
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • sql 语句 取数据库服务器上所有数据库的名字
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3