sqlserver常用函数对比.docx
《sqlserver常用函数对比.docx》由会员分享,可在线阅读,更多相关《sqlserver常用函数对比.docx(46页珍藏版)》请在冰豆网上搜索。
![sqlserver常用函数对比.docx](https://file1.bdocx.com/fileroot1/2022-10/27/fca3a1fd-c8cb-4e00-9615-16fe90fb2b0a/fca3a1fd-c8cb-4e00-9615-16fe90fb2b0a1.gif)
sqlserver常用函数对比
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:
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可以通过第四霾问刂瞥鱿执问?
BR> selectINSTR('sdsfasdqe','sd',1,2)valuefromdual返回6
24.求子串
S:
selectsubstring('abcd',2,2)value
O:
selectsubstr('abcd',2,2)valuefromdual
25.子串代替返回aijklmnef
S:
SelectSTUFF('abcdef',2,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),getdate(),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(),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(