懷疑做Oracle的人思維方式是不是有點秀逗

來源:互聯網
上載者:User

感覺他們的思維邏輯不正常。

毛病1:

選擇表中人員名字非空的所有人

在微軟的mssqlserver中以下兩句
   select * from person_name where person_name <>'';
   select * from person_name where person_name is not null;
在自然語言的語意上是一樣的。執行結果也都正常。

但在oracle中。
select * from person_name where person_name <>'';
    結果竟是一條記錄也沒有,也沒有報錯。
  一定要寫成
   select * from person_name where person_name is not null;
但是選出所有人名不是'小王'的人時。用如下語句
select * from person_name where person_name <>'小王'';
Oracle的結果又是對的。

毛病2:
這個毛病在實際開發中碰上的。超難找。害我鬱悶了半天,而且現在也沒有分析出為什麼。我想沒有多少人敢說自己十分的清楚Oracle的RowNum是在什麼時候,怎麼一步步排出來的。。

先說一下原理

Oracle分頁原理。
//有興趣的可以google <<Hibernate分頁查詢原理解讀>>一文

public String getLimitString(String sql) {
  StringBuffer pagingSelect = new StringBuffer(100);
  pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
  pagingSelect.append(sql);
  pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?");
  return pagingSelect.toString();
}
Oracle採用嵌套3層的查詢語句結合rownum來實現分頁,這在Oracle上是最快的方式

其中入參sql 可以為任意的SQL語句。

在實際用時我在250多個分頁列表頁裡用都是正常的。但是就是有一個頁面。真是怪。翻幾頁。就會出現最後一條不會更新的情況。:(

當時那條語句是這樣的。
string sel_sql="SELECT ORGANIZE.ID, ORGANIZE.TITLE,ORGANIZE_TYPE.NAME TypeName FROM ORGANIZE, ORGANIZE_TYPE WHERE   ORGANIZE_TYPE.ORGTYPE_ID = ORGANIZE.ORGTYPE_ID and  ORGANIZE_TYPE.sts='A' and  ORGANIZE.OFFICE_ID=128    order by TypeName  ";

   TzhPager1.SelectCommand=sel_sql; 
   TzhPager1.CurrentPageIndex = 0;
   TzhPager1.DataBind();

查不出原因。看了半天。邏輯上沒有地方不對呀。

最後我把“order by TypeName“ 改成了“order by TypeName Desc “    TMD顯示又正常了。Oracle真是有病。

還不如去用個不要錢的mysql也比它好用。:(至少人家還有limit(m,n)直接拿來用。

Oracle這東東胖的豬一樣。裝一下硬碟用起來就是以G算。記憶體佔用真是霸道。用起來思維邏輯又老讓人想不通。裝在windows平台上又沒有半點鐘優勢。這種東西還不如不用的好。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.