今天在看建表的sql语句时,突然看到如果字段为varchar类型时,会设置一下CHARACTER SET utf8 COLLATE utf8_bin,后来看了一下网上的贴子,设置collate的主要作用是设置对自符的较难规则。 举个例子吧: 按下面的sql语句去搜索 select to_id from test where to_id='cn象_王';

出现的结果会搜索出两条来 +---------------+ | to_id | +---------------+ | cn陶_陶 | | cn象_王 | +---------------+ 为什么?“cn陶_陶”与“cn象_王”编码后的字符都不一样,但是为什么mysql会认为这两条记录是一样的呢? 如果把COLLATE **_bin都改成一样的,那结果就对了。 这里先解释一下mysql collation的命名规则: 它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束 原来MySQL按照下面的方式选择表字符集和校对规则: 如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y。 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 否则,采用服务器字符集和服务器校对规则。 下面总结一下一般的建表的sql语句吧:   CREATE TABLE `product` ( `SITE` varchar(32) NOT NULL, `id` bigint(20) NOT NULL, `gmt_create` datetime NOT NULL DEFAULT '1999-09-09 00:00:00','创建时间'  //时间的设置 `gmt_modified` datetime NOT NULL DEFAULT '1999-09-09 00:00:00','修改时间' `PROVINCE` varchar(128)CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,'省'  //如果是字符则要这样设 PRIMARY KEY (`id`), //设置主键 KEY `idx_offer_mid_st_ge_gid_tp` (`member_id`,`STATUS`,`GMT_EXPIRE`,`group_id`,`TYPE`), //设置索引 KEY `idx_test` (`member_id`,`GMT_EXPIRE`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 原文链接:http://hi.baidu.com/linda_lij/item/b653f1aedc67f7ac28ce9deb

转载于:https://www.cnblogs.com/ahauzyy/archive/2012/08/08/3043356.html

mysql collate相关推荐

  1. mysql COLLATE=utf8mb4_unicode_ci

    记一次mysql COLLATE=utf8mb4_unicode_ci的坑 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (u ...

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

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

  3. mysql字符集调整总结

    mysql字符集调整总结 --http://xjsunjie.blog.51cto.com/999372/1355013 字符集是一套符号和编码的规则,不论是在oracle数据库还是在mysql数据库 ...

  4. thinkphp mysql exp_thinkphp备份数据库的方法分享

    貌似THINKPHP没有备份数据库的方法,所以我自己写了一个,数据库连接和事务处理用的是pdo,如果有需要的可以联系我,写个mysql或者mysqli的 class SqlAction extends ...

  5. 十三周二次课(6月20日)

    13.4 MySQL用户管理 场景,为了安全,新建的站点,创建新的用户,或者给予使用已有账户,给予权限 MySQL创建用户以及授权 mysql> grant all on *.* to 'aik ...

  6. ci框架 mysql 超时时间_mysql 字符集和校验规则( CHARSET amp; COLLATE)

    我们首先看下常见建表语句: mallAllGoodsCREATE TABLE `qywl`.`mallAllGoods` ( `id` varchar(64) NOT NULL COMMENT '主键 ...

  7. mysql的collate_MYSQL中的COLLATE是什么?

    文章目录 [隐藏] 在mysql中执行show create table 指令,可以看到一张表的建表语句,example如下: CREATE TABLE `table1` ( `id` bigint( ...

  8. mysql的collate什么意思_MYSQL中的COLLATE是什么?

    在mysql中执行show create table 指令,可以看到一张表的建表语句,example如下: CREATE TABLE `table1` ( `id` bigint(20) unsign ...

  9. mysql中新建数据库create table的COLLATE是什么?

    在mysql中执行show create table <tablename>指令,可以看到一张表的建表语句,example如下: CREATE TABLE `table1` (`id` b ...

最新文章

  1. 爬取豆瓣电影排名前250部电影并且存入Mongo数据库
  2. IOS成长之路-检测耳机插入/拔出
  3. django项目简单调取百度翻译接口
  4. 在xcode上把你的app多语言国际化(NSLocalizedString)
  5. Spring中的Spring JSR-250 注释
  6. Linux 应用程序的源码包如何安装?
  7. mean shift 图像分割(一、二、三)
  8. python代码翻译器-python写的翻译代码
  9. UE4开发六:人物动画
  10. Linux:使用libgen.h:basename,dirname
  11. C++ 第三课:常量转义字符
  12. 在deepin系统下安装git
  13. 字数统计,一个英文字母算一个字,一个汉字算一个字,一个符号算一个字
  14. pycharm社区版搭建配置django2.2.16开发环境
  15. 在centOS中安装以及使用vim编辑器
  16. 查看服务器配置以及常用命令
  17. qt有关tcpserver中读取数据时是否使用flush时的研究
  18. Twitter将开通直播打赏功能 帮助美国网红赚钱
  19. 【Some】【心学】心学精华,人生要旨
  20. 管理学中常用的激励理论

热门文章

  1. python创建自定义函数is_number()来判断一个字符是否是数字
  2. 对列表中k之前和之后的元素分别进行逆序
  3. java如何实现e的次方_java 大数据次方运算
  4. MySQL数据库优化二三事
  5. Layer1隐私项目BeamX DAO完成200万美元融资,Collider Ventures、AirSpeed18等机构参投
  6. 经济学家Alex Kruger:DeFi是比特币的自然演变
  7. SAP License:SAP 现金流量表实现方法谈
  8. HTML--day02
  9. leetcode第26题:删除排序数组的重复项
  10. hdu 6348 序列计数