黑马程序员技术交流社区

标题: [深圳特色][问答网]如何创建一个UTF-8且有比较规则的数据... [打印本页]

作者: 深圳黑马程序员    时间: 2015-11-29 19:00
标题: [深圳特色][问答网]如何创建一个UTF-8且有比较规则的数据...






在Android开发中,为了保存持久的具有结构的数据,就要使用到数据库。这次我们来探讨一下如何创建一个指定字符集为“UTF-8”且具有比较规则的数据库。看看深圳的师生在问答网上是如何探讨这个问题的:














学员问题:

如何创建一个数据库,指定字符集为utf8,且具有比较规则

老师回答:

校对规则通过关键字collate指定,比如创建数据库d1,指定字符集为utf8,校对规则为utf8_bin
CREATE DATABASE d1 DEFAULT CHARACTER SET utf8  COLLATE utf8_bin;

大家在使用mysql过程中,可能会遇到类似以下的问题:
root@chuck 07:42:00>select * from test where c1 like 'ab%';
+-----+
| c1 |
+-----+
| abc |
| ABD |
+-----+
模糊匹配 ab%,结果以AB开头的字符串也出现在结果集中,大家很自然的认为是大小写敏感的问题。那么mysql中大小写敏感就是通过校对规则进行控制的。
那么字符集和校对规则的关系是什么呢?

字符集(charset):是一套符号和编码。
校对规则(collation):是在字符集内用于比较字符的一套规则,比如定义'A'<'B'这样的关系的规则。不同collation可以实现不同的比较规则,如'A'='a'在有的规则中成立,而有的不成立;进而说,就是有的规则区分大小写,而有的无视。
每个字符集有一个或多个校对规则,并且每个校对规则只能属于一个字符集。
具体可以参考博客 http://www.tsingpost.com/index.php/archives/543/



[深圳特色] 揭秘内部问答网中经典问题,每周更新!
深圳校区除了全国独有问答网,就业老师面试服务,还有更多神秘惊喜等着你,咨询热线:0755-66689855







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2