一个表中有一个长度为1024的nvarchar2型字段,用update更新为长度为1024的值,更新成功。但是检索出来后却只有前1000位了,谁能告诉我原因啊??

解决方案 »

  1.   

    nvarchar2数据类型最大支持长度就是1000字符,用来存储Unicode字符集的变长字符型数据,长度<=1000字节。
      

  2.   

    nvarchar2数据类型最大支持长度就是2000字节,用来存储Unicode字符集,1个Unicode字符=2个字节,所以最多存储1000个字符。
      

  3.   

    更正一下:NVARCHAR2数据类型最大支持长度是1000字符,用来存储Unicode字符集的变长字符型数据,而UNICODE数据都是双字节数据,NVARCHAR2(n)的 n 代表字符数为非字节数。
      

  4.   

    而且,似乎按照各位的说法,nvarchar2(1024)最大只能存储512个Unicode字符,为什么最后可以到1000呢?
      

  5.   

    1、NVARCHAR2(n)的 n 代表字符数为非字节数。2、估计是在update操作执行成功之前已经被截断了。
      

  6.   

    谢谢回答,但是还是有些疑问:1)既然n是代表字符数,而nvarchar2有定下来之能最大1000个字符,为什么创建的时候可以创建长度在1000-2000之间的nvarchar2字段呢?
    2)我是直接update的,没有通过程序…… 而且如果我使用的值是1025的话,更新就会失败!哪位达人能解释一下nvarchar2的机制吗?和字符集会不会有什么关系呢? 我用的是日文版oracle9i
      

  7.   

    哈哈,解决了。用to_nchar把1024的值给括起来就可以了~~~不过还有个迷惑的地方,为啥1024长度的值就不能用 preparedStatement.setString了呢?
    有没有什么代替的可以用?我现在是放弃了preparedStatement,直接拼起来的。