设为首页 加入收藏

TOP

纠正要求修改数据库NLS_LENGTH_SEMANTICS参数的错误要求(二)
2015-07-24 11:36:16 来源: 作者: 【 】 浏览:10
Tags:纠正 要求 修改 数据库 NLS_LENGTH_SEMANTICS 参数 错误
insert into tab_t values ('ZHON') * ERROR at line 1: ORA-12899: value too large for column "SYS"."TAB_T"."T_NAME" (actual: 4,maximum: 3)
?

从上面测试数据来看,插入三个英文字母成功,在插入四个字母的字符串时失败,提示实际长度为4,但maximum只有3

(5) 插入中文字符串数据测试

1)先计划一下“中”字占用几个字节

SQL> SELECT LENGTHB('中') FROM DUAL;

LENGTHB('中')

-------------

3

2)插入一个中文汉字

SQL> insert into tab_t values ('中');

1 row created.

?

3)插入两个中文汉字

SQL> insert into tab_t values ('中国');

insert into tab_t values ('中国')

*

ERROR at line 1:

ORA-12899: value too large for column "SYS"."TAB_T"."T_NAME" (actual: 6, maximum: 3)

插入两个中文汉字失败,实际长度为6,字段maximum只有3,在此验证确定,在UTF8下,一个中文汉字占3个字符。

?

5.3 将tab_t表的t_name列更改成char长度类型并做可插入长度测试

(1)将tab_t表的t_name列长度类型更改成char

SQL>alter table tab_t modify (t_name varchar2(3char));

(2)验证修改结果

SQL> selecttable_name,column_name,data_type,char_used from dba_tab_columns wheretable_name='TAB_T' ;

TABLE_NAME COLUMN_NAME DATA_TYPE CHAR_USED

-------------------- ----------------------- ------------------------- -----------------------------

TAB_T T_NAME VARCHAR2 C

(3) 插入两个中文汉字
?

SQL> insert into tab_t values ('中国');



1 row created.

varchar2(3 char)插入两个中文汉字成功

?

6、小结

经过对开发人员的需求进行判断,以及纠正其对NLS_LENGTH_SEMANTICS参数用途错误的理解,用修改表字段长度类型的方式解决其面临的实际问题,避免了一次不必要的数据库重启,以及问题得到真正的解决。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【翻译自mos文章】使用索引快速全.. 下一篇管理ONS(OracleNotificationServi..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)