mysql 数据库表:

CREATE TABLE `book_order_test` (`order_id` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '订单id',`payment` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分',`payment_type` int(2) DEFAULT NULL COMMENT '支付类型,1、在线支付,2、货到付款',`post_fee` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '邮费。精确到2位小数;单位:元。如:200.07,表示:200元7分',`status` int(10) DEFAULT NULL COMMENT '状态:1、未付款,2、已付款,3、未发货,4、已发货,5、交易成功,6、交易关闭',`create_time` datetime DEFAULT NULL COMMENT '订单创建时间',`update_time` datetime DEFAULT NULL COMMENT '订单更新时间',`payment_time` datetime DEFAULT NULL COMMENT '付款时间',`consign_time` datetime DEFAULT NULL COMMENT '发货时间',`end_time` datetime DEFAULT NULL COMMENT '交易完成时间',`close_time` datetime DEFAULT NULL COMMENT '交易关闭时间',`shipping_name` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流名称',`shipping_code` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流单号',`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',`buyer_message` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '买家留言',`buyer_nick` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '买家昵称',`buyer_rate` int(2) DEFAULT NULL COMMENT '买家是否已经评价',UNIQUE KEY `order_id` (`order_id`) USING BTREE,KEY `create_time` (`create_time`),KEY `buyer_nick` (`buyer_nick`),KEY `status` (`status`),KEY `payment_type` (`payment_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

COLLATE 关键字是什么意思?

关键字

collation_name

按照二进制编码比较排序,主要是对字符集之间的比较和排序,可以通过 show collation查看所有的校对集。

官方解释:是应用于表达式、列定义或数据库定义的排序规则的名称。

collate的名字包括两部分,前部分是表示字符集,后部分定义如下:

分类 说明
_BIN 指定使用向后兼容的二进制排序顺序。
_BIN2 指定使用 SQL Server 2005中引入的码位比较语义的二进制排序顺序。
_CI(CS) 是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分
_KI(KS) 是否区分假名类型,KI不区分,KS区分
_Stroke 按笔划排序
_WI(WS) 是否区分全半角,WI不区分,WS区分

还可以根据拼音,笔画来排序。

如何设置排序规则

可以在数据库(create database/alter database时指定),字段级别(create table/alter table时指定)使用Collate命令设置collate,字段级别优先级更高

语法

语法
COLLATE < collation_name >< collation_name > ::= { Windows_collation_name } | { SQL_collation_name }

参数

collation_name

可以只是指定的 Windows_collation_name 或 SQL_collation_name。

  • Windows_collation_name

是 Windows 排序规则的排序规则名称。请参见 Windows 排序规则名称。

  • SQL_collation_name

SQL 排序规则的排序规则名称。请参见 SQL 排序规则名称。

注释

COLLATE 子句可以在几个级别上指定,包括以下级别:

  • 创建或更改数据库。

可以使用 CREATE DATABASE 或 ALTER DATABASE 语句的 COLLATE 子句指定数据库的默认排序规则。还可在创建数据库时使用 SQL Server 企业管理器指定排序规则。如果不指定排序规则,则将为数据库指派 SQL Server 实例的默认排序规则。

  • 创建或更改表列。

可以使用 CREATE TABLE 或 ALTER TABLE 语句的 COLLATE 子句指定每个字符串列的排序规则。还可在创建表时使用 SQL Server 企业管理器指定排序规则。如果不指定排序规则,将为列指派数据库的默认排序规则。

还可使用 COLLATE 子句中的 database_default 选项,指定临时表中的列使用连接的当前用户数据库(而不是 tempdb)的默认排序规则。

  • 投影表达式的排序规则。

可以使用 COLLATE 子句将字符表达式投影到特定的排序规则。将为字符字面值和变量指派当前数据库的默认排序规则。将为列引用指派列的定义排序规则。有关表达式排序规则的信息,请参见排序规则的优先顺序。


标识符的排序规则取决于定义标识符时所在的级别。为实例级对象(如登录名和数据库名)的标识符指派实例的默认排序规则。为数据库对象(如表、视图和列名)的标识符指派数据库的默认排序规则。例如,对于名称差别仅在于大小写的两个表,可在使用区分大小写排序规则的数据库中创建,而不能在使用不区分大小写排序规则的数据库中创建。

当连接上下文与数据库相关时,可以创建变量、GOTO 标签、临时存储过程和临时表,且当已将上下文切换到其它数据库时引用它们。变量、GOTO 标签、临时存储过程和临时表的标识符在实例的默认排序规则中。

COLLATE 子句只能应用于 char、varchar、text、nchar、nvarchar 和 ntext 数据类型。

排序规则一般由排序规则名标识。例外情况是:在安装过程中没有为 Windows 排序规则指定排序规则名称,而是指定排序规则指示器,然后选择复选框以指定区分或不区分大小写和重音的二进制排序或字典排序。

可以执行系统函数 fn_helpcollations 以检索 Windows 排序规则和 SQL 排序规则的所有有效排序规则名称的列表:

SELECT *
FROM ::fn_helpcollations()

SQL Server 只支持由基础操作系统支持的代码页。

当执行依赖排序规则的操作时,被引用对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。

这些操作可包括:

  • 当创建或更改数据库时,为数据库指定默认排序规则。

  • 当创建或更改表时,为列指定默认排序规则。

  • 当还原或附加数据库时,操作系统必须支持数据库的默认排序规则,并支持数据库中的任何 char、varchar 和 text 列或参数的排序规则。

支持 char 和 varchar 数据类型的代码页转换,但是不支持 text 数据类型的代码页转换。不报告代码页转换过程中的数据丢失。

如果被引用的对象所使用或指定的排序规则使用 Windows® 不支持的代码页,则 SQL Server 将发出错误信息。

参考文档:

【官方文档1】

【官方文档2】

over

转载于:https://www.cnblogs.com/yizhiamumu/p/9151960.html

冷知识点:COLLATE 关键字是什么意思?相关推荐

  1. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

  2. MySQL中的CHARSET和COLLATE关键字

    MySQL中使用命令SHOW CREATE TABLE t可以查看建表语句,如下所示,我们可以看到描述中有两个关键字CHARSET和COLLATE,其中CHARSET可能很多人都大概知道,但是对COL ...

  3. mysql collate是什么意思_mysql中的collate关键字是什么意思?

    CREATE TABLE `tb_order` ( `order_id` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '订单id', `paym ...

  4. Java知识点之关键字

    1.请你讲讲Java里面的final关键字是怎么用的? (1)当final修饰一个类时,表明这个类不能被任何类继承,并且被final修饰的这个类中的成员和方法被隐式设置为final (2)使用fina ...

  5. 1075 PAT Judge (25 分)【难度: 一般 / 知识点: 多关键字排序】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805393241260032 就是排序,注意一些细节即可. #includ ...

  6. 1055 The World‘s Richest (25 分)【难度: 一般 / 知识点: 多关键字排序】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805421066272768 这里: 注意用scanf,printf. 有 ...

  7. SQL SERVER 生僻字查询问题和关键字COLLATE

    先说问题,生僻字查询的问题,有的时候我们的数据里包含一些生僻字,在查询用Like模糊匹配的时候,发现有的查询不准确,测试数据如下: --测试数据 if not object_id(N'Tempdb.. ...

  8. MYSQL中的COLLATE是什么?

    转载自: https://www.jianshu.com/p/f8707b8461d3 在mysql中执行show create table <tablename>指令,可以看到一张表的建 ...

  9. 深入理解Java中的final关键字

    深入理解Java中的final关键字 http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什 ...

最新文章

  1. composer报错:received xxx bytes out of the 以及composer手动引入扩展包
  2. hdu 4349——Xiao Ming's Hope
  3. java ssh完整配置文件_ssh框架整合笔记---配置文件
  4. 7-4 组从配置-操作
  5. 在Ubuntu上面使用华为EC3372
  6. vim无法写入hosts文件(提示hosts是一个只读文件)
  7. 休闲甜品店创业计划书_甜品店创业计划书
  8. 2012蓝桥杯【初赛试题】 取球游戏
  9. office和计算机基础,国二ms才office计算机基础知识.ppt
  10. TDD (test driver development)测试驱动开发
  11. win10打开internet信息服务器,Win10打开internet信息服务的方法
  12. property 的详细使用方法
  13. linux shell命令行与脚本编程---处理输入输出
  14. 分布式监控平台CAT原理
  15. 课程列表和整合阿里云视频点播
  16. k8s calico-node错误日志 listen tcp: lookup localhost on ip:53: no such host
  17. java餐厅点餐系统免费_基于jsp的餐厅点餐系统-JavaEE实现餐厅点餐系统 - java项目源码...
  18. Python 3.7极速入门教程9最佳python中文书籍下载
  19. Java项目:基于Jsp实现网上订餐系统
  20. Linux Shell脚本语句执行失败,后续语句继续执行的问题

热门文章

  1. 计算机网络管理员设备清单,网络管理员资料:计算机网络互联设备路由器
  2. Android客户端三步完成支付宝支付SDK接入
  3. 数据库查询+数据库备份+数据库恢复
  4. Python 人员值班表
  5. 前田约翰《简单法则》十条
  6. matlab设计走马灯,移动端UI样式-走马灯
  7. freeRTOS中断优先级
  8. pythonsuper继承规则,Python用super继承
  9. miui android耗电快,你们的小米手机更新MIUI10之后耗电吗?试试这个方法解决吧
  10. 手动实现李群SE(3)到李代数se(3)之间的对指数运算关系