Oracle字段类型设计与实际业务不符引发的问题

2014-11-24 17:13:38 · 作者: · 浏览: 0

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大小比较如果相等再比较下一个,类推。