当前位置: 代码迷 >> SQL >> SQL SERVER 与ORACLE惯用函数比较(转)
  详细解决方案

SQL SERVER 与ORACLE惯用函数比较(转)

热度:122   发布时间:2016-05-05 15:05:36.0
SQL SERVER 与ORACLE常用函数比较(转)

数学函数

序号

函数功能

SQL Server用法

Oracle用法

1

绝对值

select abs(-1) value

select abs(-1) value from dual

2

取整()

select ceiling(-1.001) value

select ceil(-1.001) value from dual

3

取整()

select floor(-1.001) value

select floor(-1.001) value from dual

4

取整(截取)

select cast(-1.002 as int) value

select trunc(-1.002) value from dual

5

四舍五入

select round(1.23456,4) value

select round(1.23456,4) value from dual

6

为底的幂

select Exp(1) value

select Exp(1) value from dual

7

e为底的对数

select log(2.7182818284590451)

select ln(2.7182818284590451)

8

10为底对数

select log10(10)

select log(10,10)

9

取平方

select SQUARE(4)

select power(4,2)

10

取平方根

select SQRT(4)

select SQRT(4)

11

求任意数为底的幂

select power(3,4)

select power(3,4)

12

取随机数

select rand()

select sys.dbms_random.value(0,1)

13

取符号

select sign(-8)

select sign(-8)

14

圆周率

SELECT PI()

?

15

sin,cos,tan

select sin(PI()/2)

select sin(PI()/2)

16

求集合最大值

select max(value) value from
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

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

17

求集合最小值

select min(value) value from
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

select least(1,-2,4,3) value from dual

18

处理null(F2中的null10代替)

select F1,IsNull(F2,10) value from Tbl

select F1,nvl(F2,10) value from Tbl

?

数值间比较

序号

函数功能

SQL Server用法

Oracle用法

1

求字符序号

select ascii('a')

select ascii('a') value from dual

2

从序号求字符

select char(97) value

select chr(97) value from dual

3

连接

select '11'+'22'+'33' value

select CONCAT('11','22')||33 value from dual

4

子串位置

select charindex('s','sdsq',2) value

select instr('sdsq','s',2) value from dual

5

模糊子串的位(返回2,参数去掉中间%则返回7)

select patindex('%d%q%','sdsfasdqe') value

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

6

求子串

select substring('abcd',2,2) value

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

7

子串代替(返回aijklmnef)

SELECT STUFF('abcdef', 2, 3, 'ijklmn') value

SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual

8

子串全部替换

没发现

select Translate('fasdbfasegas','fa','' ) value from dual

9

长度

Lendatalength

length

10

大小写转换

lower,upper

lower,upper

11

单词首字母大写

没发现

select INITCAP('abcd dsaf df') value from dual

12

左补空格

select space(10)+'abcd' value

select LPAD('abcd',14) value from dual

13

右补空格

select 'abcd'+space(10) value

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

14

删除空格

ltrim,rtrim

ltrim,rtrim,trim

15

重复字符串

select REPLICATE('abcd',2) value

lpad('d',6,'0'),rpad(d,6,0)

16

发音相似性比较(这两个单词返回值一样,发音相同)

SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')

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

?

日期函数

序号

函数功能

SQL Server用法

Oracle用法

1

系统时间

select getdate() value

select sysdate value from dual

?

前后几日

直接与整数相加减

直接与整数相加减

?

求日期

select convert(char(10),getdate(),20) value

select trunc(sysdate) value from dual select to_char(sysdate,'yyyy-mm-dd') value from dual

?

求时间

select convert(char(8),getdate(),108) value

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

?

取日期时间的其他部分

DATEPART??DATENAME?函数?(第一个参数决定)

to_char函数?第二个参数决定

?

参数---------------------------------需要补充
  year yy, yyyy?
  quarter qq, q (季度)
  month mm, m (m O无效)
  dayofyear dy, y (O表星期)
  day dd, d (d O无效)
  week wk, ww (wk O无效)
  weekday dw (O不清楚)
  Hour hh,hh12,hh24 (hh12,hh24 S无效)
  minute mi, n (n O无效)
  second ss, s (s O无效)
  millisecond ms (O无效)

?

当月最后一天

没发现

select lsat_day(sysdate) value from dual

?

本星期的某一天(比如星期日)

没发现

select Next_day(sysdate,7) vaule FROM DUAL;

?

字符串转时间

可以直接转或者select cast('2004-09-08'as datetime) value

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

?

求两日期某一部分的差(比如秒)

select datediff(ss,getdate(),getdate()+12.3) value

直接用两个日期相减(比如d1-d2=12.3
  SELECT (d1-d2)*24*60*60 vaule FROM DUAL;

?

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

select dateadd(mi,8,getdate()) value

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


  相关解决方案