用select max(length(t.mc)) from table t 发现里面数据最大长度为43,但是把mc长度改为50的时候,确提示出错ora-01441错误,某些列长度过长

TheLost 2008-10-12 10:57:34
mc为varchar2(100)
请问是怎么回事?
...全文
233 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mantisXF 2008-10-13
  • 打赏
  • 举报
回复
应该是有中文字符的关系。[Quote=引用楼主 TheLost 的帖子:]
mc为varchar2(100)
请问是怎么回事?
[/Quote]
新鲜鱼排 2008-10-13
  • 打赏
  • 举报
回复
下面两种列长度的定义当有出数字和英文字符以外字符出现时可能会有区别。
VARCHAR2(12 BYTE)
VARCHAR2(12 CHAR)
yyxhcf 2008-10-13
  • 打赏
  • 举报
回复
MARK。
oracledbalgtu 2008-10-12
  • 打赏
  • 举报
回复
length()计算输入字符集字符的长度,如果是中文字符集,一个中文作为一个字符处理.
lengthb()计算输入字符集字符的字节长度,如果是中文字符集,一个中文作为两个字节处理.
varchar2定义的是字节长度.
nvarchar2定义的是对应国家字符集的字符长度.


[Quote=引用 2 楼 TheLost 的回复:]
lengthb的结果大于50,为什么会这样?
lengthb不是字节长度嘛,mc既然是varchar2,为什么length得不出准确长度
[/Quote]
TheLost 2008-10-12
  • 打赏
  • 举报
回复
lengthb的结果大于50,为什么会这样?
lengthb不是字节长度嘛,mc既然是varchar2,为什么length得不出准确长度
tiannabian 2008-10-12
  • 打赏
  • 举报
回复
你用lengthb看看是多长
select max(lengthb(t.mc)) from table t

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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