字段类型设计与实际业务不符引发的问题1
2013-06-07 16:10
288 查看
在表的设计过程中,开发人员总是对字段的类型不以为然,下面来演示一个例子,按照应该设计为number的,结果设计成了varchar2,那会导致什么问题呢?下面我们来做一个实验。
SQL> create table test(id varchar2(10));
表已创建。
SQL> declare
2 i number;
3 begin
4 for i in 1..100 loop
5 insert into test values(i);
6 end loop;
7 end;
8 /
PL/SQL 过程已成功完成。
SQL> commit;
提交完成。
SQL> select count(*) from test where id <'9';----猜猜是多少,难道不是8?
COUNT(*)
----------
89
SQL> select count(*) from test where id <'19';
COUNT(*)
----------
11
SQL> select * from test where id < '19';
ID
----------
1
10
11
12
13
14
15
16
17
18
100
已选择11行。
总结:Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。
SQL> create table test(id varchar2(10));
表已创建。
SQL> declare
2 i number;
3 begin
4 for i in 1..100 loop
5 insert into test values(i);
6 end loop;
7 end;
8 /
PL/SQL 过程已成功完成。
SQL> commit;
提交完成。
SQL> select count(*) from test where id <'9';----猜猜是多少,难道不是8?
COUNT(*)
----------
89
SQL> select count(*) from test where id <'19';
COUNT(*)
----------
11
SQL> select * from test where id < '19';
ID
----------
1
10
11
12
13
14
15
16
17
18
100
已选择11行。
总结:Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。
相关文章推荐
- 字段类型设计与实际业务不符引发的问题2
- 关于数据库Varchar字段类型长度设计问题(转载)
- 解决SQL2008中设计表字段及类型时无法保存的问题
- 关于数据库Varchar字段类型长度设计问题
- 关于数据库Varchar字段类型长度设计问题
- 再谈HashMap-由一个实际问题引发的对HashMap设计吐嘈
- 关于数据库Varchar字段类型长度设计问题
- sqlserver中int 类型的字段,值为null的时候引发一个问题
- 关于数据库Varchar字段类型长度设计问题
- 关于数据库Varchar字段类型长度设计问题
- 关于修改以太网帧头类型字段引发的问题
- Mysql字段类型设计相关问题!
- Mysql字段类型设计相关问题!
- 关于数据库Varchar字段类型长度设计问题
- 再谈HashMap-由一个实际问题引发的对HashMap设计吐嘈
- 关于数据库Varchar字段类型长度设计问题
- 从源代码剖析Struts2中用户自定义配置转换器的两种方式——基于字段的配置转换器和基于类型的配置转换器(解决了实际系统中,因没有区分这两种工作方式的生命周期而引起的异常错误问题)
- 一个关于Oracle更新语句引发的时间字段类型的问题
- 关于数据库Varchar字段类型长度设计问题
- [置顶] 设计模式-单例模式(Singleton)在Android中的应用场景和实际使用遇到的问题