有時候用這兩種數據庫很頭痛, 總結了一些它們的不同。希望有心人更正補全,方便自己,方便大家*.
*. 做單獨的查詢時, Orcale使用一個叫DUAL的偽表, 而MySQL不需要.
*. MySQL別名不區分大小寫, MySQL字符比較也不區別大小寫.
*. 包含null的任何運算(is null 除外), 包括null = null, MySQL返回NULL, Oracle(........待定..).
*. Oracle中, 如果列名長于列限定字符數, 那么輸出的列名會被截斷.
*. MySQL 4.0以后的版本支持UNION和UNION ALL, 但仍不支持INTERSECT和MINUS.
日期:
*. MySQL只支持類似于2002-3-12或者96-12-1的日期格式.
*. 日期運算MySQL是用DATE_ADD(date, interval 2 month)這樣的函數運算, 而Oracle用類似于ADD_MONTHS(date, 2)這樣樣的函數來運算.
*. Oracle可以使用MONTHS_BETWEEN, NEW_TIME, NEXT_DAY這樣的函數計算日期.
*. Oracle使用SYSDATE獲得當前時間, MySQL使用NOW();
字符
*. 字符串引用, Oracle只能用單引號, MySQL還可以用雙引號.
*. 用字符型數據使用算術運算符, Oracle報錯, MySQL會先將此數據轉換為數值.
*. MySQL中"||"符號默認是"或"運算符, 連接字符串用函數CONCAT.
*. MySQL中取得字符ASCII碼用函數ASCII(), Oracle用CHR();
*. Oracle可以使用INITCAP函數讓字符串首字母大字.
*. MySQL中使用REPLACE函數時必須要寫全三個參數.
*. REPLACE函數中, 第二個和第三個任一參數為NULL, MySQL返回NULL; 而Oracle在第二個參數為NULL時會返回字符串, 第三個參數缺少或為NULL時會刪除與第二個參數匹配的字符.
*. Oracle中可以使用translate來進行字符串替換.
*. Oracle中不可以對數值使用length函數. MySQL自動將數值轉換為字符.
GROUP BY 和 HAVING
*. Oracle中, 有GROUP BY子句的查詢, SELECT后只能出現聚合函數或者GROUP BY子句中作為分組條件的列. MySQL可以使用其它列, 該列的值將等于指分組條件在查詢時第一個出現的行的該列的值.
*. MySQL中, 同時包含GROUP BY和HAVING的子句, 只可以在HAVING中使用聚合函數或者SELECT中作為列表的列; Oracle中可以使用其它列, 這個列是指該分組的所有行的列. 比如 HAVING col < 5, 指該分組所有行的col列均小于5.
剛開始寫博客! 呵呵,主要是記錄下自己的一些東西,期望和大家交流.
posted on 2008-03-06 14:41
pinuo 閱讀(1587)
評論(0) 編輯 收藏 所屬分類:
Database