排序规则是字符数据的一个属性,封装了几个方面的特性,包括多语言支持(和Unicode类型有关,因为它支持所有语言)、排序规则、区分大小写、区分重音,等等。要得到系统中目前支持的所有排序规则极其描述,可以查询表函数fn_helpcollations,如下所示:

1 SELECTname,description
2 FROMsys.fn_helpcollations();

  例如,排序规则Latin1_General_CI_AS表示:

  • Latin1_General  支持的语言是英语。
  • 字典排序  基于字典顺序对字符数据进行排序和比较('A'和'a'<'B'和'b')。这一排序规则之所以采用字典顺序,是因为当没有显示地定义任何排序规则时,就默认使用字典顺序(更确切地说,排序规则名称中没有显示地出现BIN元素)。如果出现了BIN元素,就表示要根据字符的二进制表示对字符数据进行排序和比较('A'<'B'<'a'<'b')。
  • CI  数据不区分大小写('a'='A')。
  • AS  数据区分重音。

  可以在4中不同的级别上定义排序规则:SQL Server实例、数据库、列、以及表达式。最低的排序规则是比较有效的一种定义方式。

  SQL Server实例的排序规则是在安装时设置的。它决定了所有系统数据库的排序规则,同时也是用户数据库默认使用的排序规则。

  当创建用户数据库时,可以使用COLLATE子句指定数据库的排序规则。如果不指定,则默认采用SQL Server实例的排序规则。

  数据库的排序规则决定了数据库中对象数据的排序规则,同时也是用户表列默认使用的排序规则。要重点强调的是,数据库的排序规则决定了元数据(包括对象和列名称)的排序规则。例如,如果数据库的排序规则是不区分大小写的,那么在同一架构内就不能同时创建两个名为T1和t1的表;但如果数据库的排序规则是区分大小写的,则可以创建这样的两个表。

  在定义列时,可以用COLLATE子句显示地指定它的排序规则。如果不指定,则默认使用数据库的排序规则。

  用COLLATE子句也可以修改表达式的排序规则。例如,在不区分大小写的环境中,以下查询使用的是不区分大小写的比较:

1 SELECTempid,firstname,lastname
2 FROMHR.Employees
3 WHERElastname=N'davis';

  该查询会返回与Sara Davis关联的数据行,显然大小写并不匹配,因为查询效果就是不区分大小写的。

  如果想在列的排序规则是不区分大小写的前提下,让过滤条件是区分大小写的,则可以按如下所示的方法来修改表达式的排序规则:

1 SELECTempid,firstname,lastname
2 FROMHR.Employees
3 WHERElastname COLLATE Latin1_General_CS_AS =N'davis';

  这次,查询将返回一个空的结果集,因为当前使用区分大小写的比较时,没有找到任何匹配的信息。

引号分割的标识符

  在标准的SQL中,单引号用于分割文字字符串(例如,'literal'),而双引号用于分割不规则的标识符(表名或列名包含空格或以数字作为开始,例如,"Irregular Identifier")。在SQL Server中,有一个名为QUOTED_IDENTIFIER的设置选项,用于控制双引号的含义。可以在数据库级应用这个设置选项(用ALTER DATABASE命令),也可以在会话级应用这个设置选项(用SET命令)。当打开这个设置时,其行为符合标准SQL的规定,双引号仅用于分割标识符。当关闭这个设置时,其行为就不是标准的了,双引号这时也可以用于分割文字字符串。在此强烈建议遵循最佳实践,坚持使用标准行为(将这个选项设置为ON)。大多数数据库接口(包括OLEDB和ODBC)都默认将这个选项设置为ON。

  单引号(')用于分割文字字符串,如果单引号是文字字符串的一部分,则需要由两个单一号('')表示。例如,要表示文字字符串abc'de,应该写成'abc''de'。

提示:除了用双引号分割标识符以外,SQL Server也支持用方括号作为分隔符(例如,[Irregular Identifier])。

处理字符数据--排序规则(Collation)相关推荐

  1. mysql 中文字符排序规则_mysql中字符集和排序规则说明

    数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...

  2. mysql中一次字符集和排序规则引起的sql查询报错

    先看sql o.city_name AS '城市',o.city_code AS '城市编码',o.comp_name AS '公司',o.comp_code AS '分公司编码',b.brand_n ...

  3. mysql concat 不同字符集_字符编码 - 如何将整个MySQL数据库字符集和排序规则转换为UTF-8?...

    字符编码 - 如何将整个MySQL数据库字符集和排序规则转换为UTF-8? 如何将整个MySQL数据库字符集转换为UTF-8并将整理转换为UTF-8? 17个解决方案 591 votes 使用utf8 ...

  4. MySQL字符集和排序规则详解

    本篇博客主要记录mysql当中关于创建数据库时候选择:字符集.排序规则等相关知识.通过示例直观的看出其真正作用. 目录 1.前言 2.mysql字符集 2.排序规则 2.1.排序规则作用 2.2.排序 ...

  5. mysql默认字符集和排序_MySQL字符集和排序规则

    MySQL在创建数据库是,需要设置数据库的字符集和排序规则,如图所示: 我觉得这里有必要解释下字符集和排序规则这两个概念. 字符集 说到字符集,需要先提下字符.字符集和字符编码这几个词的含义. 字符( ...

  6. mysql的四个默认数据库是什么版本,MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列。...

    MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列. 最初,服务器字符集和排序规则取决于启动mysqld时使用的选项.可以使用 --character-set-serv ...

  7. mysql数据排序规则_Mysql 数据库排序规则

    前言: 在新建MySQL数据库或表的时候经常会选择字符集和排序规则.数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有以下几点: (1 ...

  8. mysql选择排序规则_关于mysql创建数据库中字符集和排序规则的选择

    1:字符集: 一般 主要选择两种: 1:utf8   (看unicode编码区从1 - 126就属于传统utf8区,),一般都够用,除非需要存储特殊字符 2:utf8mb4(utf8mb4兼容utf8 ...

  9. sql server中字符集和排序规则到底什么关系

    --SQLSERVER 中的排序规则 服务器>数据库>表列 --------------------------------- 排序规则简介 ----------------------- ...

  10. SQL Server 问题之 排序规则(collation)冲突

    一.写在前面 最近公司进行开发环境升级,数据库也准备了一个新的服务器,一切准备好后开始数据迁移,采取的方式为对现有Database(现有服务器Windows Server 2003 + SQL Ser ...

最新文章

  1. java读取欧姆龙plc_欧姆龙CJ2M系列PLC与PLC之间的数据相互读取设定
  2. linux教程 sed命令的用法,Linux文本处理三剑客——sed命令使用教程
  3. mysql严重查询速度的问题一则
  4. C语言模拟实现(一)----- 优先权抢占式时间片调度算法
  5. Golang make chan 第二个参数(size)
  6. 安卓中,当activity处于不可见时将立即消毁
  7. 原来竟然还有这种局部变量!
  8. mac bigsur 360极速浏览器闪退问题解决方法
  9. 基于忆阻器的神经网络应用研究
  10. 无法解析类型java.lang.Object。从必需的.class文件间接引用了它
  11. vscode自动生成项目目录结构
  12. 决策树算法原理——cart
  13. Java面试知识点(零)Java零碎知识点
  14. 由于计算机启动了配置文件,提示由于启动计算机时出现了页面文件配置问题解决方法...
  15. 【Deep Learning 5】FNN前馈神经网络
  16. 极光推送demo下载运行错误
  17. 戳对地方,葛优躺秒变工作狂
  18. 多线程下httpClient报错 Connection pool shut down
  19. 魅族mx四核即将使用android,32nm魅族MX四核即将上市 预定即送彩壳
  20. 【融职培训】Web前端学习 第2章 网页重构2 常用的html标签

热门文章

  1. jsonp和ajax的区别,dataType jsonp和JSON之间的区别
  2. xadmin获取mysql_Django2集成xadmin详解-5-获取登录用户信息并填充相应Model字段
  3. mac perl dbd mysql_Install DBD::mysql for Perl in XAMPP in Mac , solving errors
  4. sql developer下载_开放下载!《Rocket MQ 使用排查指南》精解100+常见问题
  5. 会展管理系统是计算机软件系统,展商管理系统|会展管理信息系统
  6. mysql-conn.php_PHP连接MySQL方式
  7. 爬虫封号解决 -- Win10系统如何修改网卡的物理地址(MAC)
  8. JavaScript学习笔记 - 提升
  9. Nginx负载均衡与Tomcat使用Redis共享session配置
  10. 边沿检测电路设计verilog