【发布时间】:2012-12-13 02:20:48
【问题描述】:
我遇到了一个奇怪的问题。我有这样的代码。
insert into my_table
substr(my_name,1,199)
给出的错误是:
值对于列...太大(实际:246,最大值:200)
查看我表中最大的名字,我有类似的东西:“8”x12"“
是否有可能发生了一些字符集的事情,所以当它插入时,字符数会增加?如果是这样,我该如何补救?我已经尝试在子字符串化之前显式转换为 UTF8,但这根本没有帮助。
【问题讨论】:
-
您能否显示问题案例的 my_name 的完整值以及列定义。插入更通常是
insert into table (columns) values (list),短语法有什么原因吗? -
你使用
substr,所以你减去199个字符,在unicode中可能是246个字节,你的列定义为varchar2(200 byte)。可能应该在这里使用substrb? -
您能发布用于该列的数据类型和长度吗?您使用的是
varchar2(200 bytes)还是varchar2(200 char)?如果您使用bytes,您可能无法存储 200 个字符,因为有些字符占用超过一个字节
标签: sql oracle character-encoding substr