SQLServer和Oracle常用函数对比
?
数学函数 1.绝对值 S:selectabs(-1)value O:selectabs(-1)valuefromdual 2.取整(大) S:selectceiling(-1.001)value O:selectceil(-1.001)valuefromdual 3.取整(小) S:selectfloor(-1.001)value O:selectfloor(-1.001)valuefromdual 4.取整(截取) S:selectcast(-1.002asint)value O:selecttrunc(-1.002)valuefromdual 5.四舍五入 S:selectround(1.23456,4)value1.23460 O:selectround(1.23456,4)valuefromdual1.2346 6.e为底的幂 S:selectExp(1)value2.7182818284590451 O:selectExp(1)valuefromdual2.71828182 7.取e为底的对数 S:selectlog(2.7182818284590451)value1 O:selectln(2.7182818284590451)valuefromdual;1 8.取10为底对数 S:selectlog10(10)value1 O:selectlog(10,10)valuefromdual;1 9.取平方 S:selectSQUARE(4)value16 O:selectpower(4,2)valuefromdual16 10.取平方根 S:selectSQRT(4)value2 O:selectSQRT(4)valuefromdual2 11.求任意数为底的幂 S:selectpower(3,4)value81 O:selectpower(3,4)valuefromdual81 12.取随机数 S:selectrand()value O:selectsys.dbms_random.value(0,1)valuefromdual; 13.取符号 S:selectsign(-8)value-1 O:selectsign(-8)valuefromdual-1 14.圆周率 S:SELECTPI()value3.1415926535897931 O:不知道 15.sin,cos,tan参数都以弧度为单位 例如:selectsin(PI()/2)value得到1(SQLServer) 16.Asin,Acos,Atan,Atan2返回弧度 17.弧度角度互换(SQLServer,Oracle不知道) DEGREES:弧度-〉角度 RADIANS:角度-〉弧度 数值间比较 18.求集合最大值 S:selectmax(value)valuefrom (select1value union select-2value union select4value union select3value)a O:selectgreatest(1,-2,4,3)valuefromdual 19.求集合最小值 S:selectmin(value)valuefrom (select1value union select-2value union select4value union select3value)a O:selectleast(1,3)valuefromdual 20.如何处理null值(F2中的null以10代替) S:selectF1,IsNull(F2,10)valuefromTbl O:selectF1,nvl(F2,10)valuefromTbl 21.求字符序号 S:selectascii('a')value O:selectascii('a')valuefromdual 22.从序号求字符 S:selectchar(97)value O:selectchr(97)valuefromdual 23.连接 S:select'11'+'22'+'33'value O:selectCONCAT('11','22')33valuefromdual 23.子串位置--返回3 S:selectCHARINDEX('s','sdsq',2)value O:selectINSTR('sdsq','s',2)valuefromdual 23.模糊子串的位置--返回2,参数去掉中间%则返回7 S:selectpatindex('%d%q%','sdsfasdqe')value O:oracle没发现,但是instr可以通过第四个参数控制出现次数 selectINSTR('sdsfasdqe','sd',1,2)valuefromdual返回6 24.求子串 S:selectsubstring('abcd',2,2)value O:selectsubstr('abcd',2)valuefromdual 25.子串代替返回aijklmnef S:SELECTSTUFF('abcdef',3,'ijklmn')value O:SELECTReplace('abcdef','bcd','ijklmn')valuefromdual 26.子串全部替换 S:没发现 O:selectTranslate('fasdbfasegas','fa','我')valuefromdual 27.长度 S:len,datalength O:length 28.大小写转换lower,upper 29.单词首字母大写 S:没发现 O:selectINITCAP('abcddsafdf')valuefromdual 30.左补空格(LPAD的第一个参数为空格则同space函数) S:selectspace(10)+'abcd'value O:selectLPAD('abcd',14)valuefromdual 31.右补空格(RPAD的第一个参数为空格则同space函数) S:select'abcd'+space(10)value O:selectRPAD('abcd',14)valuefromdual 32.删除空格 S:ltrim,rtrim O:ltrim,rtrim,trim 33.重复字符串 S:selectREPLICATE('abcd',2)value O:没发现 34.发音相似性比较(这两个单词返回值一样,发音相同) S:SELECTSOUNDEX('Smith'),SOUNDEX('Smythe') O:SELECTSOUNDEX('Smith'),SOUNDEX('Smythe')fromdual SQLServer中用SELECTDIFFERENCE('Smithers','Smythers')比较soundex的差 返回0-4,4为同音,1最高 日期函数 35.系统时间 S:selectgetdate()value O:selectsysdatevaluefromdual 36.前后几日 直接与整数相加减 37.求日期 S:selectconvert(char(10),getdate(),20)value O:selecttrunc(sysdate)valuefromdual selectto_char(sysdate,'yyyy-mm-dd')valuefromdual 38.求时间 S:selectconvert(char(8),108)value O:selectto_char(sysdate,'hh24:mm:ss')valuefromdual 39.取日期时间的其他部分 S:DATEPART和DATENAME函数(第一个参数决定) O:to_char函数第二个参数决定 参数---------------------------------下表需要补充 yearyy,yyyy quarterqq,q(季度) monthmm,m(mO无效) dayofyeardy,y(O表星期) daydd,d(dO无效) weekwk,ww(wkO无效) weekdaydw(O不清楚) Hourhh,hh12,hh24(hh12,hh24S无效) minutemi,n(nO无效) secondss,s(sO无效) millisecondms(O无效) ---------------------------------------------- 40.当月最后一天 S:不知道 O:selectLAST_DAY(sysdate)valuefromdual 41.本星期的某一天(比如星期日) S:不知道 O:SELECTNext_day(sysdate,7)vauleFROMDUAL; 42.字符串转时间 S:可以直接转或者selectcast('2004-09-08'asdatetime)value O:SELECTTo_date('2004-01-0522:09:38','yyyy-mm-ddhh24-mi-ss')vauleFROMDUAL; 43.求两日期某一部分的差(比如秒) S:selectdatediff(ss,getdate()+12.3)value O:直接用两个日期相减(比如d1-d2=12.3) SELECT(d1-d2)*24*60*60vauleFROMDUAL; 44.根据差值求新的日期(比如分钟) S:selectdateadd(mi,8,getdate())value O:SELECTsysdate+8/60/24vauleFROMDUAL; 45.求不同时区时间 S:不知道 O:SELECTNew_time(sysdate,'ydt','gmt')vauleFROMDUAL; -----时区参数,北京在东8区应该是Ydt------- ASTADT大西洋标准时间 BSTBDT白令海标准时间 CSTCDT中部标准时间 ESTEDT东部标准时间 GMT格林尼治标准时间 HSTHDT阿拉斯加?夏威夷标准时间 MSTMDT山区标准时间 NST纽芬兰标准时间 PSTPDT太平洋标准时间 YSTYDTYUKON标准时间 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |