停止更新,敏捷测试及TestOps解决体系,关注订阅号TestOps

Oracle和MS SQL server的函数对比.zt

上一篇 / 下一篇  2007-12-19 18:34:00 / 个人分类:数据库

 
---------数学函数
  1.绝对值51Testing软件测试网&xS%q%u:o}] FO
  S:select abs(-1) value
Z^`:Jm#i9jsTi0  O:select abs(-1) value from dual
  2.取整(大)
]A-J/kJ4d0  S:select ceiling(-1.001) value
V} T2t k4T7m(\~0  O:select ceil(-1.001) value from dual
  3.取整(小)
2jJ9XP^8Rt0  S:select floor(-1.001) value51Testing软件测试网3h P uy%w1T0\`
  O:select floor(-1.001) value from dual
  4.取整(截取)
/zqs*|4wy;X0  S:select cast(-1.002 as int) value51Testing软件测试网9~&Uj:f4VJ~gUU
  O:select trunc(-1.002) value from dual
  5.四舍五入
!i? Z hXq M woY0  S:select round(1.23456,4) value 1.23460
N_;z:L1c w0  O:select round(1.23456,4) value from dual 1.2346
  6.e为底的幂
)~5spBp7H^ _0  S:select Exp(1) value 2.7182818284590451
$fZt1Dw*C0  O:select Exp(1) value from dual 2.71828182
  7.取e为底的对数51Testing软件测试网G3A0z7bDz(Xo
  S:select log(2.7182818284590451) value 1
dom["S^5cO0  O:select ln(2.7182818284590451) value from dual; 1
  8.取10为底对数
l{Ja{0  S:select log10(10) value 1
AA/H H['[C0  O:select log(10,10) value from dual; 1
  9.取平方51Testing软件测试网9Xa[g%M B$E&n{
  S:select SQUARE(4) value 1651Testing软件测试网(@&M*XAgo
  O:select power(4,2) value from dual 16
  10.取平方根
1ZcN.Yg0  S:select SQRT(4) value 251Testing软件测试网,Mj#rX,Px
  O:select SQRT(4) value from dual 2
  11.求任意数为底的幂51Testing软件测试网g4U"Y.eS,{k^P4y)}
  S:select power(3,4) value 8151Testing软件测试网j)q,b m0H6ua
  O:select power(3,4) value from dual 81
  12.取随机数51Testing软件测试网9p0] lI\
  S:select rand() value51Testing软件测试网7h[` M uc$i%RA}
  O:select sys.dbms_random.value(0,1) value from dual;
  13.取符号
#og6b"p(QW,Nn5}0  S:select sign(-8) value -1
Sh*oC Fl.f|0  O:select sign(-8) value from dual -151Testing软件测试网4yb Mjq,Z3}8g ?
  ----------数学函数
  14.圆周率
/lW6u*v MmE0  S:SELECT PI() value 3.1415926535897931
Tf1@0[8k-|&s0  O:不知道
  15.sin,cos,tan 参数都以弧度为单位
}$cr+D+~`0  例如:select sin(PI()/2) value 得到1(SQLServer)
  16.Asin,Acos,Atan,Atan2 返回弧度
  17.弧度角度互换(SQLServer,Oracle不知道)
xZ#Z3Wp RUa&w0  DEGREES:弧度-〉角度
Y]#E_&L A0  RADIANS:角度-〉弧度
  ---------数值间比较
  18. 求集合最大值
0S.yAPq.\!dQ0  S:select max(value) value from51Testing软件测试网AzVH:h3[ WJ|"P
  (select 1 value51Testing软件测试网 b`'f` XB0r.] w9|'U
  union
1A ` MB{yBY0  select -2 value
4o ^I\T:z#V0  union51Testing软件测试网M+DCfp S5@)n%F
  select 4 value
C+}/KKuJ*^:js0  union
`$G$v^BfB0  select 3 value)a
  O:select greatest(1,-2,4,3) value from dual
  19. 求集合最小值
ao i0EHpn%T*V0  S:select min(value) value from
^Y ^d^,w0  (select 1 value51Testing软件测试网Co X/m v
  union
#E-E/n O![0  select -2 value51Testing软件测试网2H-RuX8|?{t
  union
\-q*Kf7\^j{h4[?0  select 4 value
5igWr*^0  union
Xd4{_.K HD0  select 3 value)a
  O:select least(1,-2,4,3) value from dual
  20.如何处理null值(F2中的null以10代替)
n+iaKr"N0  S:select F1,IsNull(F2,10) value from Tbl51Testing软件测试网B B9U sUe1s_9t,a
  O:select F1,nvl(F2,10) value from Tbl
  --------数值间比较
  21.求字符序号
9T+Ex-]f C0  S:select ascii('a') value51Testing软件测试网5F,V#jQT
  O:select ascii('a') value from dual
  22.从序号求字符51Testing软件测试网4a2S c)]4L
  S:select char(97) value
?2Mq'u3XKG#j)G4p)},E0  O:select chr(97) value from dual
  23.连接
q|O$My:M0  S:select '11'+'22'+'33' value51Testing软件测试网:swj ]a$~1jLIiws
  O:select CONCAT('11','22')||33 value from dual
  23.子串位置 --返回351Testing软件测试网 sft#x2Y.[(g
  S:select CHARINDEX('s','sdsq',2) value
M5b$]JSl0  O:select INSTR('sdsq','s',2) value from dual
  23.模糊子串的位置 --返回2,参数去掉中间%则返回751Testing软件测试网DOi~O%X
  S:select patindex('%d%q%','sdsfasdqe') value
VfY5f_[0  O:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR>  select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6
  24.求子串51Testing软件测试网7J|u;I-rE4D9a
  S:select substring('abcd',2,2) value
9y j(l$d^ tH0  O:select substr('abcd',2,2) value from dual
  25.子串代替 返回aijklmnef51Testing软件测试网 md h:d4h
  S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value51Testing软件测试网.da8PwK,WK4}
  O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual
  26.子串全部替换51Testing软件测试网&Jr7J i.|y"N4`
  S:没发现
C]3L2m W^ sk)wj0  O:select Translate('fasdbfasegas','fa','我' ) value from dual
  27.长度51Testing软件测试网'_T\"wU s3pL
  S:len,datalength51Testing软件测试网4\,D-LHp?n S
  O:length
  28.大小写转换 lower,upper
  29.单词首字母大写51Testing软件测试网,v!A [5v:jM;` I*I
  S:没发现51Testing软件测试网` `Gh:d'O~&l
  O:select INITCAP('abcd dsaf df') value from dual
  30.左补空格(LPAD的第一个参数为空格则同space函数)
X0\Tf*lT$O*k'x0  S:select space(10)+'abcd' value
.H"nVUqNKVm eoB \0  O:select LPAD('abcd',14) value from dual
  31.右补空格(RPAD的第一个参数为空格则同space函数)
2l OYOSA"qg u n0  S:select 'abcd'+space(10) value
(\cj}j&`K7\"x0  O:select RPAD('abcd',14) value from dual
  32.删除空格51Testing软件测试网cX"B}+O^ol n
  S:ltrim,rtrim51Testing软件测试网HbL Z o0m;X9Xa4x
  O:ltrim,rtrim,trim
  33. 重复字符串
4xf0` Y(} v0  S:select REPLICATE('abcd',2) value51Testing软件测试网!l9](BT'[|
  O:没发现
  34.发音相似性比较(这两个单词返回值一样,发音相同)51Testing软件测试网3`"WLGf(m%D)r
  S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')51Testing软件测试网g%fZ%a#y#{`
  O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual51Testing软件测试网:_H9n.|k&_.\Z
  SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差
Z9eXMZ!Z0  返回0-4,4为同音,1最高
  --------------日期函数
  35.系统时间51Testing软件测试网$y R*m2NJ%[#sg
  S:select getdate() value51Testing软件测试网.S?3t4FX:s(l9V ^;w-Zw`
  O:select sysdate value from dual
  36.前后几日51Testing软件测试网Q8N%E[;nK
  直接与整数相加减
  37.求日期51Testing软件测试网h"~U J ?'|
  S:select convert(char(10),getdate(),20) value
y]7s$j/I(@0  O:select trunc(sysdate) value from dual
[)^6dz.A0  select to_char(sysdate,'yyyy-mm-dd') value from dual
  38.求时间
8R5{a,`J9nM0  S:select convert(char(8),getdate(),108) value51Testing软件测试网$q_A1o1Ath
  O:select to_char(sysdate,'hh24:mm:ss') value from dual
  39.取日期时间的其他部分
/pbw@4Js0  S:DATEPART 和 DATENAME 函数(第一个参数决定)
j:OmO%I0  O:to_char函数 第二个参数决定
  参数---------------------------------下表需要补充
d%lIx$r'e4H0  year yy, yyyy
%Z7d j;NXgI6O@l0  quarter qq, q (季度)51Testing软件测试网9G,@!a/TE
  month mm, m (m O无效)
W5H"L'wp'u0  dayofyear dy, y (O表星期)51Testing软件测试网9u6t^0]c
  day dd, d (d O无效)51Testing软件测试网5G y:l4y$uC"N(bC^
  week wk, ww (wk O无效)
@#A!UmMCDn1C-s0  weekday dw (O不清楚)
E!ot*L ]S0  Hour hh,hh12,hh24 (hh12,hh24 S无效)51Testing软件测试网,vF~m+}E\G%W
  minute mi, n (n O无效)51Testing软件测试网o"p%e4E5\ex
  second ss, s (s O无效)51Testing软件测试网0MgS8~.ol1bV
  millisecond ms (O无效)51Testing软件测试网)d@H CT D
  ----------------------------------------------
  40.当月最后一天
.A8l{L\"L0  S:不知道
#AQf:YR0  O:select LAST_DAY(sysdate) value from dual
  41.本星期的某一天(比如星期日)
m&?%H)[qx(M d0  S:不知道51Testing软件测试网+L[2X kn`MV"[
  O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
  42.字符串转时间
U6sk7VSw2M,k0  S:可以直接转或者select cast('2004-09-08'as datetime) value51Testing软件测试网vi En'x_V
  O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
  43.求两日期某一部分的差(比如秒)51Testing软件测试网#`!S$` HO'H
  S:select datediff(ss,getdate(),getdate()+12.3) value51Testing软件测试网z[v!Ycj#cwNx4K*D
  O:直接用两个日期相减(比如d1-d2=12.3)
2Q?`jVY%_0  SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
  44.根据差值求新的日期(比如分钟)
xE3l:C#p Fq:Na.Mj0  S:select dateadd(mi,8,getdate()) value
3h7lqJZ1V#C0  O:SELECT sysdate+8/60/24 vaule FROM DUAL;
  45.求不同时区时间51Testing软件测试网S:^0tR+]
  S:不知道51Testing软件测试网-OG dO\5@ z*gmW+Q
  O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;
  -----时区参数,北京在东8区应该是Ydt-------
em-ObNYMA3_0  AST ADT 大西洋标准时间51Testing软件测试网Q2G$L l*p~5AG eB'jO
  BST BDT 白令海标准时间51Testing软件测试网 o#c+u a0M3un
  CST CDT 中部标准时间
tOo|5i^5eo0  EST EDT 东部标准时间
5IK*pr:Y'`}0  GMT 格林尼治标准时间
:W(_9r"@GrP(v0  HST HDT 阿拉斯加—夏威夷标准时间51Testing软件测试网SP1zT0E s"@
  MST MDT 山区标准时间
}%A GR-o V0  NST 纽芬兰标准时间51Testing软件测试网 f W${-wy4KS
  PST PDT 太平洋标准时间51Testing软件测试网)P"I(]D$kksW
  YST YDT YUKON标准时间51Testing软件测试网+`}F'aL Jl

TAG: DBS

erya 引用 删除 songyan777   /   2008-06-12 15:02:29
收藏!
 

评分:0

我来说两句

Open Toolbar