Sep 042012
 
This entry is part 9 of 20 in the series Matlab数据库基础班

最近在折腾一个自己的数据库,大体想法是Postgres数据库,Matlab前端。出于“省事”的目的,我用混杂了中文和英文(GDP、CPI之流)的字符串作为字段名。由于太懒,很多字段也没有作缩减,用完整的长度,最终发现会出一些莫名其妙的问题。一个表象就是几个很长,同时前面一段字符又相同的字段下面的数据经常会“打架”。

开始以为是程序问题,改了又改。最后才意识到,可能是因为 字段名称长度(不是字段中的数据长度)限制的问题。Postgres数据库的字段名称最长可以是63个字符,而我用到的那些字符串都没有那么长。于是我有些疑惑不解。

后来利用pgAdmin找到数据表中被截断那些字段名,发现它们的长度竟然各异。猛然觉悟,是不是因为中文字符的原因,于是计算一下中文字符和非中文字符的数量,然后列个方程解出来发现每个中文字符占用3字节,而非中文字符只要占用1字节。

后来才想到,由于这个数据库的内部编码格式为utf8,在这种编码下,中文字符占用3字节空间。

 

以此为记。

No related posts.

Series Navigation<< Win7x64系统下SQLite的JDBC驱动的问题PG数据库的一点备忘(同步、备份与优化) >>
Bookmark/FavoritesSina WeiboGoogle+FacebookQQTwitterYahoo BookmarksBaiduDiggEmailGoogle GmailOutlook.comEvernotePrintAIMLinkedInBlogger PostKindle ItOrkutShare

Related Posts:
  • No Related Posts, :-(

  One Response to “Postgres数据库的字段长度问题”

  1. 中文字符永远都不可能只占用1个字节。至少也要两个。

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>