Oracle欄位類型設計與實際業務不符引發的問題

來源:互聯網
上載者:User

Oracle欄位類型設計與實際業務不符引發的問題

在Oracle表的設計過程中,開發人員總是對欄位的類型不以為然,下面來示範一個例子,按照應該設計為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大小比較如果相等再比較下一個,類推。

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.