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,-2,4,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:select11+22+33value O:selectCONCAT(11,22)||33valuefromdual
24.子串位置--返回3
S:selectCHARINDEX(s,sdsq,2)value O:selectINSTR(sdsq,s,2)valuefromdual
25.模糊子串的位置--返回2,参数去掉中间%则返回7
S:selectpatindex(%d%q%,sdsfasdqe)value O:oracle没发现,但是instr可以通过第四个参数控制出现次数 selectINSTR(sdsfasdqe,sd,1,2)valuefromdual返回6
26.求子串
S:selectsubstring(abcd,2,2)value O:selectsubstr(abcd,2,2)valuefromdual
27.子串代替返回aijklmnef
S:SELECTSTUFF(abcdef,2,3,ijklmn)value O:SELECTReplace(abcdef,bcd,ijklmn)valuefromdual
28.子串全部替换
S:没发现 O:selectTranslate(fasdbfasegas,fa,我)valuefromdual
29.长度
S:len,datalength O:length
30.大小写转换lower,upper
31.单词首字母大写
S:没发现 O:selectINITCAP(abcddsafdf)valuefromdual
32.左补空格(LPAD的第一个参数为空格则同space函数)
S:selectspace(10)+abcdvalue O:selectLPAD(abcd,14)valuefromdual
33.右补空格(RPAD的第一个参数为空格则同space函数)
S:selectabcd+space(10)value O:selectRPAD(abcd,14)valuefromdual
34.删除空格
S:ltrim,rtrim O:ltrim,rtrim,trim
35.重复字符串
S:selectREPLICATE(abcd,2)value O:没发现
36.发音相似性比较(这两个单词返回值一样,发音相同)
S:SELECTSOUNDEX(Smith),SOUNDEX(Smythe) O:SELECTSOUNDEX(Smith),SOUNDEX(Smythe)fromdual
SQLServer中用SELECTDIFFERENCE(Smithers,Smythers)比较soundex的差
返回0-4,4为同音,1最高
三、日期函数
37.系统时间
S:selectgetdate()value O:selectsysdatevaluefromdual
38.前后几日
直接与整数相加减
39.求日期
S:selectconvert(char(10),getdate(),20)value O:selecttrunc(sysdate)valuefromdual selectto_char(sysdate,yyyy-mm-dd)valuefromdual
40.求时间
S:selectconvert(char(8),getdate(),108)value O:selectto_char(sysdate,hh24:mm:ss)valuefromdual