优秀的编程知识分享平台

网站首页 > 技术文章 正文

varchar存储的是字符呢还是字节呢

nanyue 2024-07-18 22:34:52 技术文章 10 ℃

varchar类型是我们平时在设计数据库时经常用到了的类型,那varchar中的长度代表的是字符呢还是字节呢?

我们知道一个字节是8位,即有8个0或者1构成,一个字符由几个字节构成则取决于对应的编码格式,因此虽然字符字节这两个词长得挺像还是有很大的区别。

  • UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。
  • Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。
  • GBK编码:一个中文占两个字节,一个英文占1个字节。

以上是编码知识,下面我们再了解一下数据库的varchar类型。对于不同的数据库varchar有不同的要求

  • 在oracle中:

我们定义一个varchar(32)即表示是32个字节,因此对于汉字来说,数据库设置的编码格式不同,存储的数据量也是不一样的,如果存放UTF-8汉字时,只能存10个(每个汉字3字节)

  • 在mysql中:

4.0版本以下,varchar(32),指的是32字节,如果存放UTF8汉字时,只能存10个(每个汉字3字节)

5.0版本以上,varchar(32),指的是32字符,无论存放的是数字、字母还是UTF-8汉字(每个汉字3字节),都可以存放32个,最大大小是65532字节

知道了上面的知识,我们在定义数据库字段为varchar类型时,就需要留意我们用的数据库是什么,以及该字段存储的是汉字还是字母数字,避免存储数据时导致数据字段超长从而犯一些低级错误。

最近发表
标签列表