我在数据库里定义一个字段为char(2),插入数据‘01’,并且确定插入数据前后没有空格。
但在java里,我读出来就是‘01  ’不知道怎么解决,怎么重新去设定数据库。

解决方案 »

  1.   

    补充一点,不想在Java程序里trim。若可行,想修改数据库设置。
      

  2.   


    你设定的是2个字符啊,没有01正好2个字符啊,java读出来的没有错误。要改的话,或者
    在java程序读出来之后改,或者用alter去修改列的类型属性。
      

  3.   


    java读出来的是01+两个空格,但定义成char(2),不是应该直接为01而没有空格吗。1.我想知道为什么,
    2.是不是跟数据库的配置有关
    3.若跟数据库的配置有关,怎么修改数据库的配置。
    (注意是数据库的配置,而不是表的定义什么的)
      

  4.   

    char(2)表示可以存储2个字符,即存储4个字节;而char(n)是定长格式,格式为char(n)的字段固定占用n个字符宽度,如果实际存放的数据长度超过n将被截取多出部分,如果长度小于n就用空字符填充。数据‘01’为2个字节,其余2个字节由空格填充,所以java读出来的自然是01+两个空格。 
      

  5.   

    char(2 byte)若表示成这样就是存储2个字节咯我个人这么理解的,不知道其他人是怎么理解的?
      

  6.   

    用dump()函数可以知道数据库里面保存的真实数据。char(2)是两个字节。
      

  7.   

    补充一下:
    You can specify the size in terms of bytes or characters, where each character contains one or more bytes, depending on the character set encoding. The syntax follows:CHAR[(maximum_size [CHAR | BYTE] )]
      

  8.   

    char(2)表示可以存储2个字符,即存储4个字节该为char(1)
      

  9.   

    我也曾经遇到过类似你那样的问题,我把问题的产生以及解决方法说下,看看对你是否有帮助。
    我以前喜欢在PL/SQL里选中某个表名,然后右键“Edit data”,编辑表里面的数据的,我常常发现我明明没有空格,可是查询出来却某名其妙的有空格,
    后来我用INSERT 脚本往表里插入数据就再也没有发生过这样的问题了。
      

  10.   

    我习惯用varchar2()。它不会产生多余的空格。
      

  11.   


    最好还是用varchar2()类型
      

  12.   


    char(2) 如果输入是'01',刚好将所有的空间占满,不会有空格如果存储汉字,只能存一个汉字!