SQL Server和Oracle常用函数对比

上一篇 / 下一篇  2008-05-04 23:51:10 / 个人分类:学习

S:`/}n ym$Re0数学函数 LUPA开源社区+^0xo"Pbi&Uh U

LUPA开源社区+~'h:L6`q&N1K6Tnc

1.绝对值 LUPA开源社区a5wrcNvh D/h2|

LUPA开源社区3`xI+v B7F"}

S:select abs(-1) value

[ `4I0C]0{H ^0LUPA开源社区 m+Ju8a%dMu-h/N%E$et(F

O:select abs(-1) value from dual

c \6APU0Q2?0

%\t |+m&WC7sS,t02.取整(大) LUPA开源社区B `K~(M!g\5K+k?

5v;L!u o"k5O pr@0S:select ceiling(-1.001) value

0F7y h8D v.Y[0LUPA开源社区Je#_FYT:d7Xpw

O:select ceil(-1.001) value from dual LUPA开源社区:y7ELF,{1v

LUPA开源社区D4^,_7d{f i!L#C

3.取整(小)

];e.g+X)M3J0

1l2}H}`Q5c0S:select floor(-1.001) value LUPA开源社区 VdW2P!uc)|r4l

h:}R'Ht][0O:select floor(-1.001) value from dual LUPA开源社区CXdq^#t

Ce*RSFV&gzfO04.取整(截取)

'[XCl AN+Gw0LUPA开源社区[!uc7o'HGZ

S:select cast(-1.002 as int) value LUPA开源社区Z/wZ+c|,o5@

LUPA开源社区h'@+`nBw+D%|{

O:select trunc(-1.002) value from dual

6Qs)m$l;X8lUX3^0LUPA开源社区$B+@ W ?{P+[gF

5.四舍五入 LUPA开源社区'^:?)f4A)Une K,@

LUPA开源社区vZ9Ub"H,~_.\

S:select round(1.23456,4) value 1.23460

ka4sn%nl7E |0

{yzg a-?{Mn n0O:select round(1.23456,4) value from dual 1.2346 LUPA开源社区F2o@O6},w&c:e

y'_4h2V_z/N06.e为底的幂 LUPA开源社区[ wwR@4G'I$}a

LUPA开源社区NU'D,i&Tg

S:select Exp(1) value 2.7182818284590451 LUPA开源社区;HL7t8G'X"w7v

#i} }%p/T1t*c0O:select Exp(1) value from dual 2.71828182

G#?jX;b0LUPA开源社区;U9V }"udP0d

7.取e为底的对数

5x ?o] h0

-z%u|)c&R1l)I8L0S:select log(2.7182818284590451) value 1 LUPA开源社区#yYg-FT}/Q k O}

LUPA开源社区5H6A|9h8I\ O;Pq-|&B

O:select ln(2.7182818284590451) value from dual; 1

F$qT.mol0

H0@Y7rj9QC1zMV.Q08.取10为底对数 LUPA开源社区@0TZG ?4ds,E3d&E;Y O

LUPA开源社区d9`~\&B)v

S:select log10(10) value 1

,eT Low2I;WN0

B.jn8M4s0O:select log(10,10) value from dual; 1

_8V;ZV%D@0

i?W} C2o09.取平方

I,_?b(bd{&g z0LUPA开源社区8}S;O*XBN9Yt

S:select SQUARE(4) value 16 LUPA开源社区8`VI Q6QM{

&^m(A(WB0O:select power(4,2) value from dual 16 LUPA开源社区r[ r.j3R*CD;N

T'b[6D:|(]E { B3i$SD010.取平方根 LUPA开源社区4~9h_&Tf l8T

LUPA开源社区d+]6Hv5O9i'[

S:select SQRT(4) value 2 LUPA开源社区CS SN DPO;T;EmI1R]

&Qv5S|.\2cH$J0O:select SQRT(4) value from dual 2 LUPA开源社区2G^Rds!Kj3\

LUPA开源社区0["LX)~~5b)G;SM&R

11.求任意数为底的幂

7~9E[W5hKY ?0LUPA开源社区6VC7B8JVG\

S:select power(3,4) value 81 LUPA开源社区R$faPr

LUPA开源社区u#]P/ad0^:W*T

O:select power(3,4) value from dual 81

0ZG q5fC[K1t{0

Aj} E/yFY012.取随机数 LUPA开源社区d;A(G ~_2strg1S

LUPA开源社区.kE_j}0XO,t

S:select rand() value LUPA开源社区)[7S|:nPiKRm

LUPA开源社区q%?hs5~V

O:select sys.dbms_random.value(0,1) value from dual; LUPA开源社区(}3v;y$^E9r

LUPA开源社区L*Bum AZo

13.取符号 LUPA开源社区[`]@4YV"l

LUPA开源社区3X"cS&iy0`|

S:select sign(-8) value -1 LUPA开源社区k(c-L/a5J0j

oW7z XO#kg;f0O:select sign(-8) value from dual -1

p-^!KV#Cu0LUPA开源社区oT/Ch!fpTd3W

14.圆周率 LUPA开源社区%O-xw |&J

LUPA开源社区W6NLW Po7DK+xl

S:SELECT PI() value 3.1415926535897931

^ W oE@KQS U s0

'r&j|EAfF/_O0O:不知道 LUPA开源社区{9C+` pB ~dl E

LUPA开源社区Q'P!t7u$V e4b+h/`e

15.sin,cos,tan 参数都以弧度为单位 LUPA开源社区@7t%r.IA

7E:mi(b q4Uc"v0例如:select sin(PI()/2) value 得到1(SQLServer)

6sxA+Hl.@[Mtt0LUPA开源社区W;Hk+|-j

16.Asin,Acos,Atan,Atan2 返回弧度 LUPA开源社区O l @G"d/]HEm,B

4W*d9k.o[S017.弧度角度互换(SQLServer,Oracle不知道) LUPA开源社区Ql2X:pR

8v-P2ZU.l1H)\'OF|0DEGREES:弧度-〉角度 LUPA开源社区1Y o1t8j4D&r

PEnr+v-E |!k z0RADIANS:角度-〉弧度 LUPA开源社区 v}z;I!p?

LUPA开源社区;T'FA-v%AmE w

数值间比较 LUPA开源社区"huoZ6\/~#E

LUPA开源社区4\0G1}6b]:P"vj

18. 求集合最大值 LUPA开源社区4q3G3_'`$cA&E

LUPA开源社区"Pj+H.R[;E-ex

S:select max(value) value from LUPA开源社区!YUNW%gX ^

XT g[xK0(select 1 value

)s/A.W(b-}&k!}D0

Z-~J(?-L8jurO$D0union LUPA开源社区L&yr*f!r.ro }{y

LUPA开源社区1\Q y\+W

select -2 value

#r y_ M|T+z T0

xkJ8h.bOB#[g8C0union LUPA开源社区{$m+?!lm-?

#P#y `ZYU&rr^\l+t0select 4 value

mL2e7l p/R'X-s-N uY!Mo0

P9w/k$r_$Gk0union LUPA开源社区|~:Qto7[&D1K

LUPA开源社区vO"atP$Ws)[\+@

select 3 value)a LUPA开源社区o"b1dEA

LUPA开源社区k ~9T OZ^\!k1NBV$_

O:select greatest(1,-2,4,3) value from dual

.X Rc1uf0

&if)Kx#phF(Qv(Pn019. 求集合最小值 LUPA开源社区0A5c\(Wh+irj3Z [

N9Z3M.n-u?y ?%q0S:select min(value) value from

]$K|p4Mx6@1i6_Zx0LUPA开源社区,}dr*{$NA-Y4i

(select 1 value LUPA开源社区*c}:{6xi7A&Kg%{"z.w$L

m&U#um2fV4{Z3{a0union LUPA开源社区;VXB,m7v8V;v&@

LUPA开源社区0HJ4k0?spW;WN

select -2 value

Q-Fc9l p0

M b.Uc"flUb+~q R0union

^%N4|kV0

gD7W Qp0select 4 value LUPA开源社区(h%N dl j)v {0f

LUPA开源社区4j:\W m"wqOx L

union LUPA开源社区-Ndu VFW9H1w:B

LUPA开源社区"U+ck]6RJz$}Gk

select 3 value)a LUPA开源社区j,@U:@(]

LUPA开源社区)Gs$u#}b'n

O:select least(1,-2,4,3) value from dual LUPA开源社区-|D4wn6\Y@/X

p6E_osXUCb7O&g020.如何处理null值(F2中的null以10代替)

i1IOa'^Jw0

`T!c_d0S:select F1,IsNull(F2,10) value from Tbl

AiT$G2g]!k5S0LUPA开源社区(x(rK7C%o[Q l b

O:select F1,nvl(F2,10) value from Tbl LUPA开源社区!Xh4?M)E*CD'@

I DZe e)C o WH5N021.求字符序号

Ji+e^C@:s^0LUPA开源社区 xi9zt5Ir4R

S:select ascii('a') value LUPA开源社区FuC#Y(A.y-Y9]0X

LUPA开源社区9@C!|I&Scl h

O:select ascii('a') value from dual

5?,tL^9H5yM:{ ]0

-M"po{Sy r022.从序号求字符 LUPA开源社区]9A0Pnxh:A;H2t ^/rcU

LUPA开源社区:c:F(q,@B

S:select char(97) value LUPA开源社区 ZE\gM8@ [VE'}3I

/k-b)Yg#bw(hQ$y qd4v0O:select chr(97) value from dual LUPA开源社区ID$F0`4N/jNE)u

p/J4M{9y023.连接

D!tKPN"t~G0

|&CP5wQ:o/Q0S:select '11'+'22'+'33' value LUPA开源社区#w[A5s*ts W0Q8xv

`1ZU r5_.e-fT0O:select CONCAT('11','22')33 value from dual LUPA开源社区I-x+nfY5o&G}N9oo

axv%Qw4u6Ww023.子串位置 --返回3

\0x'J^4w ~0

f.K0])A5nM4Q0S:select CHARINDEX('s','sdsq',2) value LUPA开源社区z} ?UT,@/P}

hY+e b.Ddz0O:select INSTR('sdsq','s',2) value from dual LUPA开源社区 Oj3U;d6Djd

Cx;h3l gm~023.模糊子串的位置 --返回2,参数去掉中间%则返回7 LUPA开源社区)I7zt7w+o7fy

#DU8]:qA)F1vUp)A:C0S:select patindex('%d%q%','sdsfasdqe') value LUPA开源社区&VR3D(v(V~-m%d]9M

l}i9HPZ8B[y}0O:oracle没发现,但是instr可以通过第四个参数控制出现次数 LUPA开源社区7ViL?D'Z

LUPA开源社区V*Q6vDh"{l0n0i

select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6

F QBNChr!a)i%B0

~ Z k Q9ud%W)_*Z9D024.求子串 LUPA开源社区"B;bn PT4^X!et

JV5c9^'t?g!c SJ0S:select substring('abcd',2,2) value

0R/p3sv3aO)@0LUPA开源社区M%mX sl {7[M"g;G3P+i

O:select substr('abcd',2,2) value from dual

6n'G b X jOOb0LUPA开源社区.s$z"z(\+J+PI1I

25.子串代替 返回aijklmnef LUPA开源社区#s j8R9z7s B(? |3gw

LUPA开源社区0NW*HQ2[7wg'u

S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value LUPA开源社区af+\g-TJv9a-i*e

LUPA开源社区K E"|"ZVC|Ru

O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual LUPA开源社区HIT,QE-k'iF

LUPA开源社区JNtu }:C

26.子串全部替换

)J[o"rD|0

{\ G'm7P*j$b(u0S:没发现

$[6Q xZ v^~0LUPA开源社区qa*h&L\,O

O:select Translate('fasdbfasegas','fa','我' ) value from dual LUPA开源社区YF$r$IsRJ

LUPA开源社区-U-m7?rV/t O1{2YM

27.长度

a Z"A/lde3c-@;J"we0LUPA开源社区~ c:Z1vj7_JBE` S `

S:len,datalength

3CXC/MMih0LUPA开源社区}(A#\]-yH U |7k#KO

O:length LUPA开源社区ii;G@&f*m1P-^

LUPA开源社区LNc)qhY

28.大小写转换 lower,upper LUPA开源社区 d i&JBLH0|S)S5MG8\

LUPA开源社区Z:F ]/zd`3\I0EX"R o

29.单词首字母大写

;X? t%M%G0

8X|8P'{(b6H0S:没发现 LUPA开源社区!]-k;?'NS"p$t

},}N8k3p(UL j0O:select INITCAP('abcd dsaf df') value from dual LUPA开源社区;~H)Bz [*AAh]%D(H$XU

LUPA开源社区(mv Xa;F"_:v"y

30.左补空格(LPAD的第一个参数为空格则同space函数) LUPA开源社区 i;MF/LxO:k

LUPA开源社区RJx\5r#JV2mj5Wrg

S:select space(10)+'abcd' value LUPA开源社区-hG1U*]+^fO Rr;F5\o

LUPA开源社区^}#E%f"I

O:select LPAD('abcd',14) value from dual LUPA开源社区i"do-ER9Z c9i

+\6\"@:S5d&R(^031.右补空格(RPAD的第一个参数为空格则同space函数)

"S.a yz,j u'ew s0

#w gH1yBl0S:select 'abcd'+space(10) value

d%p5rjG0LUPA开源社区 SKoV/U}u

O:select RPAD('abcd',14) value from dual

XvXiv.rG]YTB0LUPA开源社区dCVD a1l8@w"lN0{T

32.删除空格

D_b g$D(G [G+h0

M P Bzb|$@U%lOh0S:ltrim,rtrim

p F~$v-z0LUPA开源社区O~ I4n HJk_

O:ltrim,rtrim,trim

*t| k_ P&lb.e1W0LUPA开源社区{I1`*lD%Ty_O

33. 重复字符串 LUPA开源社区"HH0n6EeP.ud)J

0]5vS$aub:]jy0S:select REPLICATE('abcd',2) value LUPA开源社区W+R9Sw Vh5R ku

LUPA开源社区+O7mw6ca,UMtOMc

O:没发现 LUPA开源社区2Tck OT6L*\ d~

{(Q"O1b/So%j034.发音相似性比较(这两个单词返回值一样,发音相同) LUPA开源社区#?gt!Y(r!RK7p

LUPA开源社区8xlDl5R2kF.|L

S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') LUPA开源社区%~[q%c)B _

LUPA开源社区 R*mRtm$F

O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual

}zD%kaQf0

$rtF+[-qH:ENi0SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差 LUPA开源社区X+I#uS0kS m

eZOIg W1HA%qJ0返回0-4,4为同音,1最高 LUPA开源社区!Y-id]vf3n? n

LUPA开源社区L2Ar |R;wAQ

日期函数

l ?)Y `a0

-JU"E0H%_O035.系统时间

D e`d)n'w7JF0LUPA开源社区#@,`(\\~.Y5x

S:select getdate() value

$L,e0@Px9^CO2G0LUPA开源社区6rP3gK$~9F"\

O:select sysdate value from dual

e2m Of:sOGk,rQ0

EB9\Kf036.前后几日 LUPA开源社区h w'r,_M8_

LUPA开源社区5Q YfI Dlg)R:R.~

直接与整数相加减

p]4bT&\+s0

{;d8S#o@t037.求日期

2W5n[ zO0LUPA开源社区;l ?8s|o z Atw%t

S:select convert(char(10),getdate(),20) value LUPA开源社区`l-T;\ zn5fZj

8q"]$r']wP0O:select trunc(sysdate) value from dual

l'^0^P7@?5He0

Ft$S0i/h$rl%\KC0select to_char(sysdate,'yyyy-mm-dd') value from dual

A7J`#g pEC?0LUPA开源社区u(U!LX$@ W1p)H

38.求时间 LUPA开源社区a8Q*Ag2xJ @(J

LUPA开源社区/Wy7Q|g?T Y

S:select convert(char(8),getdate(),108) value LUPA开源社区ViQ`o-SU$g4c^

LUPA开源社区I{9pvB:VG-z

O:select to_char(sysdate,'hh24:mm:ss') value from dual

u'Xwc7q1E0LUPA开源社区{;V6a;g"^

39.取日期时间的其他部分

1g i5R"Bz-K;x F-`0LUPA开源社区n+Z;Y&q+^Ao7`

S:DATEPART 和 DATENAME 函数 (第一个参数决定)

;q0g| oQv6H*ve0

$LwV pa&I)t0O:to_char函数 第二个参数决定

8~A7PV%?`!]0LUPA开源社区!a ZB O3I/S2k RX

参数----下表需要补充

)vh$N Oy0

vW\:rRd FS0year yy, yyyy

zX$Z&IU&A a4gw0

_X:`6g/Do0quarter qq, q (季度)

/M.p"rc-h9cEjri0

7`l#V-n(S0n:J-l0month mm, m (m O无效) LUPA开源社区cBk8G5cz s,MK*C,T r7H

LUPA开源社区B"e$z9u(J8rx3\R

dayofyear dy, y (O表星期)

6s0{(j1k"p0LUPA开源社区x'W-i6fp

day dd, d (d O无效) LUPA开源社区1w/d\vl

y%i [!b~DM-p0week wk, ww (wk O无效)

kNF b\*d f m0LUPA开源社区'I-M"YB8H2Nw_i

weekday dw (O不清楚)

"q:MWF+m.b8raN0LUPA开源社区@u;A,Kl1B2bM

Hour hh,hh12,hh24 (hh12,hh24 S无效)

5]K,l(Vq!s0LUPA开源社区2mZh3}k6AA

minute mi, n (n O无效) LUPA开源社区D#A,b3`(@b4y

LUPA开源社区 bXZn P0z

second ss, s (s O无效) LUPA开源社区usg X+r)[ B

0h3Pf3JF V P0millisecond ms (O无效) LUPA开源社区,uy&}FR+[^

LUPA开源社区Zcl ]ix]S

-------------------------------------- LUPA开源社区:tYH}/[

LUPA开源社区*o$I*qf`+?JYM

40.当月最后一天 LUPA开源社区T eI:BN

ZmK;bR]X^ CN0S:不知道

z-lAC1{ [|0

-zzeT0PgO-X0O:select LAST_DAY(sysdate) value from dual

O)^'W z9n;d H'?0

i5m g"^$pXa041.本星期的某一天(比如星期日)

v*N8_9myN$l0LUPA开源社区$R:L,ac AoCb

S:不知道 LUPA开源社区$spo*dj*u

LUPA开源社区hAh.G%}rsa

O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

9e#R0bie0LUPA开源社区k(NT1|%C

42.字符串转时间 LUPA开源社区_`"^,z/f\x

LUPA开源社区O4D r ^'R8R(l

S:可以直接转或者select cast('2004-09-08'as datetime) value LUPA开源社区2^6oY5X/A;R/s2`I

LUPA开源社区d'Q v;K/Z4t7?&Fz!p

O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;

(AQd@)o$G} ~,B0

a(zJ fF043.求两日期某一部分的差(比如秒)

O|c lP1e0

$DQtGk(Js0S:select datediff(ss,getdate(),getdate()+12.3) value LUPA开源社区g![!a$g\{ S CGs

LUPA开源社区}/~[,?cjr1S

O:直接用两个日期相减(比如d1-d2=12.3)

c7c-jJz_0U#[0LUPA开源社区o'mFG#x#[v~*x b

SELECT (d1-d2)*24*60*60 vaule FROM DUAL; LUPA开源社区ow R@ kjoA

LUPA开源社区N]#g? H

44.根据差值求新的日期(比如分钟)

tb BL,F1z6D0LUPA开源社区BT-Uz.cG h J

S:select dateadd(mi,8,getdate()) value LUPA开源社区8v@"n%xV(W6V

LUPA开源社区7ILY$G a5z&J9P1a

O:SELECT sysdate+8/60/24 vaule FROM DUAL;

Jk3W+R L'|6oy0

#GD4s-O[9heY045.求不同时区时间 LUPA开源社区q D j {#c`Dk]

O6~4j%vy/o0S:不知道 LUPA开源社区-C(V*g;A#Ff|b

/k1c!TA3HB0O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

@$~DB/B`d jeB0LUPA开源社区0U!YY9k'j*|S1o

-----时区参数,北京在东8区应该是Ydt------- LUPA开源社区Jo&hs]5L.a]rL

LUPA开源社区X Sv%? a*I3_$N

AST ADT 大西洋标准时间

3yMZXUy8U$A%W6\0LUPA开源社区{+Eq hRT:b n

BST BDT 白令海标准时间

v s^X ^{0LUPA开源社区 e0Y)F6q&b"wz~

CST CDT 中部标准时间

^(bU~ }5XUi0

c9rC9m*du*[.~2D+Y0EST EDT 东部标准时间 LUPA开源社区$O7}[2P|x0F[

LUPA开源社区D^4J2R i

GMT 格林尼治标准时间 LUPA开源社区r6Y?0So5D$PC Bc@

Y%Z%?&XGhrA%Y[0HST HDT 阿拉斯加?夏威夷标准时间

3V c^1]$Q1S0LUPA开源社区 o E9@6Yi0j@

MST MDT 山区标准时间 LUPA开源社区4u&c!V+f#^K

Q+M+JdA,k0NST 纽芬兰标准时间

n*d:D?/mx,@g0LUPA开源社区,Tv[lu%H-A w-ym

PST PDT 太平洋标准时间

"z)b#w ZUj0

;Z%~[~kEO0YST YDT YUKON标准时间

gY8T1g)K[3F}0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-08  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 5704
  • 日志数: 27
  • 图片数: 1
  • 书签数: 2
  • 建立时间: 2007-09-17
  • 更新时间: 2008-05-19

RSS订阅

Open Toolbar