处理字符数据--排序规则(Collation)
排序规则是字符数据的一个属性,封装了几个方面的特性,包括多语言支持(和Unicode类型有关,因为它支持所有语言)、排序规则、区分大小写、区分重音,等等。要得到系统中目前支持的所有排序规则极其描述,可以查询表函数fn_helpcollations,如下所示:
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子句也可以修改表达式的排序规则。例如,在不区分大小写的环境中,以下查询使用的是不区分大小写的比较:
2 FROMHR.Employees
3 WHERElastname=N'davis';
该查询会返回与Sara Davis关联的数据行,显然大小写并不匹配,因为查询效果就是不区分大小写的。
如果想在列的排序规则是不区分大小写的前提下,让过滤条件是区分大小写的,则可以按如下所示的方法来修改表达式的排序规则:
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)相关推荐
- mysql 中文字符排序规则_mysql中字符集和排序规则说明
数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...
- mysql中一次字符集和排序规则引起的sql查询报错
先看sql o.city_name AS '城市',o.city_code AS '城市编码',o.comp_name AS '公司',o.comp_code AS '分公司编码',b.brand_n ...
- mysql concat 不同字符集_字符编码 - 如何将整个MySQL数据库字符集和排序规则转换为UTF-8?...
字符编码 - 如何将整个MySQL数据库字符集和排序规则转换为UTF-8? 如何将整个MySQL数据库字符集转换为UTF-8并将整理转换为UTF-8? 17个解决方案 591 votes 使用utf8 ...
- MySQL字符集和排序规则详解
本篇博客主要记录mysql当中关于创建数据库时候选择:字符集.排序规则等相关知识.通过示例直观的看出其真正作用. 目录 1.前言 2.mysql字符集 2.排序规则 2.1.排序规则作用 2.2.排序 ...
- mysql默认字符集和排序_MySQL字符集和排序规则
MySQL在创建数据库是,需要设置数据库的字符集和排序规则,如图所示: 我觉得这里有必要解释下字符集和排序规则这两个概念. 字符集 说到字符集,需要先提下字符.字符集和字符编码这几个词的含义. 字符( ...
- mysql的四个默认数据库是什么版本,MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列。...
MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列. 最初,服务器字符集和排序规则取决于启动mysqld时使用的选项.可以使用 --character-set-serv ...
- mysql数据排序规则_Mysql 数据库排序规则
前言: 在新建MySQL数据库或表的时候经常会选择字符集和排序规则.数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有以下几点: (1 ...
- mysql选择排序规则_关于mysql创建数据库中字符集和排序规则的选择
1:字符集: 一般 主要选择两种: 1:utf8 (看unicode编码区从1 - 126就属于传统utf8区,),一般都够用,除非需要存储特殊字符 2:utf8mb4(utf8mb4兼容utf8 ...
- sql server中字符集和排序规则到底什么关系
--SQLSERVER 中的排序规则 服务器>数据库>表列 --------------------------------- 排序规则简介 ----------------------- ...
- SQL Server 问题之 排序规则(collation)冲突
一.写在前面 最近公司进行开发环境升级,数据库也准备了一个新的服务器,一切准备好后开始数据迁移,采取的方式为对现有Database(现有服务器Windows Server 2003 + SQL Ser ...
最新文章
- java读取欧姆龙plc_欧姆龙CJ2M系列PLC与PLC之间的数据相互读取设定
- linux教程 sed命令的用法,Linux文本处理三剑客——sed命令使用教程
- mysql严重查询速度的问题一则
- C语言模拟实现(一)----- 优先权抢占式时间片调度算法
- Golang make chan 第二个参数(size)
- 安卓中,当activity处于不可见时将立即消毁
- 原来竟然还有这种局部变量!
- mac bigsur 360极速浏览器闪退问题解决方法
- 基于忆阻器的神经网络应用研究
- 无法解析类型java.lang.Object。从必需的.class文件间接引用了它
- vscode自动生成项目目录结构
- 决策树算法原理——cart
- Java面试知识点(零)Java零碎知识点
- 由于计算机启动了配置文件,提示由于启动计算机时出现了页面文件配置问题解决方法...
- 【Deep Learning 5】FNN前馈神经网络
- 极光推送demo下载运行错误
- 戳对地方,葛优躺秒变工作狂
- 多线程下httpClient报错 Connection pool shut down
- 魅族mx四核即将使用android,32nm魅族MX四核即将上市 预定即送彩壳
- 【融职培训】Web前端学习 第2章 网页重构2 常用的html标签
热门文章
- jsonp和ajax的区别,dataType jsonp和JSON之间的区别
- xadmin获取mysql_Django2集成xadmin详解-5-获取登录用户信息并填充相应Model字段
- mac perl dbd mysql_Install DBD::mysql for Perl in XAMPP in Mac , solving errors
- sql developer下载_开放下载!《Rocket MQ 使用排查指南》精解100+常见问题
- 会展管理系统是计算机软件系统,展商管理系统|会展管理信息系统
- mysql-conn.php_PHP连接MySQL方式
- 爬虫封号解决 -- Win10系统如何修改网卡的物理地址(MAC)
- JavaScript学习笔记 - 提升
- Nginx负载均衡与Tomcat使用Redis共享session配置
- 边沿检测电路设计verilog