Oracle 和 MySQL 字段长度不解

山哥 发布于 2010/11/08 17:36
阅读 1K+
收藏 3

最近发现 Oracle 和 MySQL 的字段长度的计算不一样(都是UTF8编码),比如:

在Oracle下定义: name varchar2(10) , name字段能存放: 10个字符或3个汉字

在MySQL下定义: name varchar(10),  name字段能存放: 10个字符或10个汉字

从上面可以得知:在oracle下,1个汉字=3个字节

为什么在 MySQL 下,1个汉字=1个字节 呢??

不是很理解,向大家请教。。。。。。。。。。。

加载中
0
山哥
山哥

经查, 说:MySQL5 以后 varchar 的单位是 字符了, 而 oracle 的varchar2 是字节

差异真大

0
戴威
戴威

奇怪的是varchar2(10),我装下了5个

0
烧饼加肉
烧饼加肉

我想这个是默认编码的事吧。

如果你的ORACLE安装时用的是UTF—8的话:3个字节一个汉字。

如果为GBK则是两个字节一个汉字。

0
烧饼加肉
烧饼加肉

刚装了一下MYSQL试了一下,不管字段编码方式是UTF—8,还是GBK。定义varchar(10)都能存储10个汉字。

查了一下,看一下这个你就明白了。

http://zhidao.baidu.com/question/132054814

0
山哥
山哥

引用来自#3楼“喵了个咪”的帖子

奇怪的是varchar2(10),我装下了5个

4楼正解: 编码不一样一个汉字占用的字节也不一样:

UTF-8 下 1汉字=3字节

GDK下 1汉字=2字节

0
张宋付
张宋付

oracle定义字符串应该是mysql字符串两倍左右。这个oracle=>mysql中我碰到过的。

0
qycms_cn
qycms_cn

支持mysql,如果是按oracle这样的模式,不同编码就不同的长度,如果遇到编码转换,就烦麻了。

还是mysql的字段长度数就是实际字符数目比较好理解。如果是oracle的思想,在UTF8时,还要做到是3倍数,否则varchar2(20)

存放6 个半汉字????

0
返回顶部
顶部