在Oracle中建表时容易忽视的一个小问题
来源:互联网 发布:寻侠武功突破数据八门 编辑:程序博客网 时间:2024/06/10 01:42
用Oracle很多年了,突然发现了自己一直在犯的错误,详细说一下,呵呵,通常使用的Oracle是中文的方式,也就是SIMPLIFIED CHINESE_CHINA.ZHS16GBK字符集,看下面的这个测试:
create table testdb1(name varchar2(10),address varchar2(11));
insert into testdb1 values('一二三四五六七八九十','北京');在执行这个insert 时会报错:ORA-01401: 插入的值对于列过大,下面的这个是正确的,insert into testdb1 values('一二三四五','北京');
分析一下原因:
定义name是varchar2(10)是说明name字段最多可以保存10个字节的数据,而不是长度为10的字符串,如果字符串是半角的纯英文字符串,那真是可以保存10字符,可是现在是中文,测试一下: select length('一二三四五六七八九十') length,vsize('一二三四五六七八九十') byte from dual; LENGTH BYTE ---------- ---------- 10 20
一个汉字占2个字节是地球人都知道的事情了,所以如果字段值是要保存中文字符时,不能简单的以字数的长度来定义字段长度,而是要把字数乘以2作为字段长度。
呵呵这个问题看起来很小儿科,所以还是要避免才好
- 在Oracle中建表时容易忽视的一个小问题
- 一个容易忽视的Oracle安全问题
- 一个容易忽视的Oracle安全问题
- 一个容易忽视的Oracle安全问题
- 一个容易忽视的Oracle安全问题
- 容易忽视的oracle函数问题--数据类型
- 一个容易忽视的存储过程问题
- java中一个容易忽视的问题
- 在字符数组中容易忽视的一些小的问题
- for循环一个容易被忽视的问题
- 关于USART很多人都容易忽视的一个问题
- 关于USART很多人都容易忽视的一个问题
- 一个忽视了的小问题
- 容易被忽视的一个Access关键字
- 一个容易被忽视的 strlen 细节
- java 学习中容易忽视的问题!!
- java 学习中容易忽视的问题!!
- java 学习中容易忽视的问题!!
- 一幅图总结出外国人和中国人的区别
- 一幅图总结出外国人和中国人的区别
- 如何在net中禁用后退按钮
- 什么是软件版本标志
- C++矩阵优化算法浅析
- 在Oracle中建表时容易忽视的一个小问题
- 使用.Net Reflection 反射机制 动态获取对象字段内容的示例
- UPnP详解
- Joomla API简介
- jsp的一些小技巧, 收集....
- 转:《北大牛人唐翔》
- 程序员的学习方法--一点思考
- Apprication excute order
- Joomla API简介