博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql collate
阅读量:4701 次
发布时间:2019-06-09

本文共 1251 字,大约阅读时间需要 4 分钟。

今天在看建表的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; 原文链接:  

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

你可能感兴趣的文章
Jsp编写的页面如何适应手机浏览器页面
查看>>
python里面双向队列,列表的属性和方法
查看>>
BZOJ1803Spoj1487 Query on a tree III——主席树
查看>>
C# DataTable和DataRelation
查看>>
关于slf4j+logback整合提供完善log记录的一些总结
查看>>
sqlalchemy根据数据库结构生成映射的实体
查看>>
环形数组的组最大字数组求法
查看>>
SQL命令建表
查看>>
图片上传预览 支持html5的浏览器
查看>>
开源框架收集
查看>>
[恢]hdu 2027
查看>>
论文-GoogleNet : Going Deeper with Convolutions
查看>>
51Nod - 1247 可能的路径
查看>>
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h:No such file or directory的解决办法
查看>>
Linux总结--vi与vim
查看>>
一些好用的工具网站
查看>>
jxl简析2 [ http://www.emlog.net/fei ]
查看>>
Linux命令--文件管理
查看>>
webform初识
查看>>
Java设计模式7:适配器模式
查看>>