求救:nvarchar2(1024),更新进去1024长度的值,检索出来却只有1000了!

tsing_liu 2005-11-22 10:30:11

一个表中有一个长度为1024的nvarchar2型字段,用update更新为长度为1024的值,更新成功。但是检索出来后却只有前1000位了,谁能告诉我原因啊??
...全文
366 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2005-11-22
  • 打赏
  • 举报
回复
1、NVARCHAR2(n)的 n 代表字符数为非字节数。

2、估计是在update操作执行成功之前已经被截断了。

tsing_liu 2005-11-22
  • 打赏
  • 举报
回复
而且,似乎按照各位的说法,nvarchar2(1024)最大只能存储512个Unicode字符,为什么最后可以到1000呢?
tsing_liu 2005-11-22
  • 打赏
  • 举报
回复
那么为什么我更新的时候可以操作成功呢?如果超过最大长度的话,应该提示我操作失败才是吧?

子陌红尘 2005-11-22
  • 打赏
  • 举报
回复
更正一下:NVARCHAR2数据类型最大支持长度是1000字符,用来存储Unicode字符集的变长字符型数据,而UNICODE数据都是双字节数据,NVARCHAR2(n)的 n 代表字符数为非字节数。
wgsasd311 2005-11-22
  • 打赏
  • 举报
回复
nvarchar2数据类型最大支持长度就是2000字节,用来存储Unicode字符集,1个Unicode字符=2个字节,所以最多存储1000个字符。
子陌红尘 2005-11-22
  • 打赏
  • 举报
回复
nvarchar2数据类型最大支持长度就是1000字符,用来存储Unicode字符集的变长字符型数据,长度<=1000字节。
tsing_liu 2005-11-22
  • 打赏
  • 举报
回复
哈哈,解决了。用to_nchar把1024的值给括起来就可以了~~~

不过还有个迷惑的地方,为啥1024长度的值就不能用 preparedStatement.setString了呢?
有没有什么代替的可以用?

我现在是放弃了preparedStatement,直接拼起来的。
tsing_liu 2005-11-22
  • 打赏
  • 举报
回复
再顶……
Tongls 2005-11-22
  • 打赏
  • 举报
回复
学习,不错啊!。。。。。。。
tsing_liu 2005-11-22
  • 打赏
  • 举报
回复
再顶……
在线等候
tsing_liu 2005-11-22
  • 打赏
  • 举报
回复
顶一下
有人能帮我解答一下吗?
tsing_liu 2005-11-22
  • 打赏
  • 举报
回复
谢谢回答,但是还是有些疑问:

1)既然n是代表字符数,而nvarchar2有定下来之能最大1000个字符,为什么创建的时候可以创建长度在1000-2000之间的nvarchar2字段呢?
2)我是直接update的,没有通过程序…… 而且如果我使用的值是1025的话,更新就会失败!

哪位达人能解释一下nvarchar2的机制吗?和字符集会不会有什么关系呢? 我用的是日文版oracle9i

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧