程序里面經(jīng)常會即支持Oracle數(shù)據(jù)庫,又支持sql數(shù)據(jù)庫。而有些Oracle內(nèi)置函數(shù)用的比較多,,但在sql中語法有些不同,我做了些整理,,希望可以幫助大家,。。,。,。
1.oracle中的內(nèi)置函數(shù):
oracle 中的round函數(shù)(四舍五入)(sql也可以用)
oracle 中的trunc返回的是當(dāng)天日期的[00:00:00]
oracle 中的floor,floor(n)取小于等于數(shù)值n的最大整數(shù)(sql也可以用)
oracle 中的length函數(shù) sqlserver中是len
oracle 中的datalength函數(shù) sqlserver中是datalength
oracle 中的lob_to_char函數(shù) 改為convert(char,opertime,120)
oracle 中的to_char函數(shù) 改為convert(char,opertime,120)
oracle 中的substr函數(shù) 改為substring
例如:select convert(char, getdate(), 120) --yyyy-mm-dd hh:mm:ss(24h)
convert(char,SubmitTime,120)= convert(char,getdate(),120)
oracle 中floor(sysdate - trunc(opertime)改為 datediff(dd,convert(varchar(100),InputDate,111),convert(varchar(100),getdate(),111))
oracle 中的dbms_lob.getlength改為datalength(sqlserver數(shù)據(jù)庫中把Clob類型改為NText類型)
oracle 中的 ROWNUM改為row_number() OVER(ORDER BY xx)并且sql語句中必須帶有top
例如:sql中的寫法:
SELECT * FROM (
SELECT A.*, row_number() OVER(ORDER BY A.MATTERID ) as RN FROM (
SELECT * FROM ATTACHMENT_T ) A
)T WHERE RN <= 20 AND RN >=0
證對sqlserver直接去掉dual
如: Sql Server中取系統(tǒng)函數(shù)值或者一個默認(rèn)已知值,不需要后邊加from,,也就不需要類似dual的表了,。
3.遇到的錯誤以及解決方法:
SqlDateTime 溢出。必須介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之間
修改model里面的構(gòu)造函數(shù),,給屬性賦值為DateTime類型
ElementContent_Model,,OperLog_Model