zt mysql 字符串类型及二进制字符串类型比较

本文详细介绍了MySQL中CHAR和VARCHAR的区别,包括它们的定义、如何处理大小写敏感问题以及存储方式的不同。此外还对比了TEXT与BLOB类型的特性。

转自:http://www.xiaoxiaozi.com/2009/04/07/79/

首先声明一下,MySQL,那些你不知道的系统教程主要参考《MySQL完全手册》。写此文主要是为了让自己不太好用的脑袋瓜子可以更加注意这些细节,因为最短的板决定你的成长程度。

其实,CHAR和VARCHAR的区别就在于CHAR是定长字符串,而VARCHAR代表的是变长字符串。


默认情况下,MySQL是大小写不敏感的,例如:

CREATE  TABLE  data  (name  CHAR ( 5 ) ) ;
INSERT  INTO  data  VALUES  ( 'HUGO' ) ;
SELECT  *  FROM  data  WHERE name  =  'hugo' ;

结果上面插入的那条记录被搜出来了,(小样,变小写我就不认识你啦? :lol: )

怎么样解决这个问题呢?好办,把字符串全都转换成二进制数来比较不就行了?所以MySQL提供了这么一个修饰符。

BINARY关键字,它告诉MySQL,在它之后的字符串应该以二进制方式被处理。这时,当在字符串上执行比较运算符时,MySQL将牢牢记住字符串的大小写。CHAR和VARCHAR都适用此修饰符。

ALTER  TABLE  data CHANGE  CHAR5)  BINARY ;
SELECT  *  FROM  data  WHERE name  =  'hugo' ;

:idea: 小样,换小写我还真就不认识你了。。

CHAR类型和VACHAR之间的差别在于MySQL处理这个指示器(长度指示器)的方式不同:CHAR把这个大小视为值的准确大小(用空格填补比较短的值,所以达到了这个大小),而VARCHAR类型把它视为最大值并且只使用了在存储字符串实际上需要的字节数(增加一个额外的字节记录长度)

TEXT和BLOB类型在分类和比较的方式上不同,BLOB类型区分大小写,TEXT类型不区分大小写。MySQL手册用“TEXT类型是不区分大小写的BLOB类型”最准确地说明了这一点。

其实在平时工作中,我很少用到BLOB类型,导致今天我在翻这本手册的时候几乎都忘了有这么个家伙存在。 :mrgreen:

转载于:https://www.cnblogs.com/zhanghw0354/archive/2012/07/19/2599264.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值