本帖最后由 urdoom 于 2009-08-03 14:28:52 编辑

解决方案 »

  1.   

    show charset 
    你会发现uft8最大会占3个字节长,那当然会出现你上面所说的容纳全角的情况啦如果你的需求要只能容纳300个半角的字符,而又不能容纳全角的,则选择一中字符集最大长度为1的即可
    字符集的选择,你还要考虑你的表所存的内容(例如:有没有中文等)。
    如果只是某表某字段的话,你可以设置字段的字符集,而不用改系统参数的字符集了
    字符集的作用范围:
    字段>表>库>服务器
      

  2.   

    字符字段就是这样的,以字符为单位,而不是字节为单位.如果要满足你的要求,改用SQLASCII类型,它的字符单位为一个字节,而且不限制任何字符.
    也可用bytea类型
      

  3.   


    您好,感谢您的回答
    设计要求是这样的,要求只能容纳300个半角长度的字符,但是不限制是半角还是全角字符
    比如150个汉字
    目前用UTF8的话,是300个汉字
    不知道有没有这个一种字符集可以做到
      

  4.   


    SQLASCII类型PostgreSQL里面有么?找了下没找到啊
    bytea类型无法指定长度
      

  5.   

    或者 加check约束
    字节函数 octet_length() 可以返回内码字节数,但utf8一个汉字是3个字节.