SQLServer 和Oracle常用函数对比

1 .绝对值 
S:
select   abs ( - 1 ) value
O:
select   abs ( - 1 ) value  from  dual 
  
2 .取整(大) 
S:
select   ceiling ( - 1.001 ) value 
O:
select  ceil( - 1.001 ) value  from  dual

  
3 .取整(小) 
S:
select   floor ( - 1.001 ) value 
O:
select   floor ( - 1.001 ) value  from  dual

  
4 .取整(截取)
S:
select   cast ( - 1.002   as   int ) value 
O:
select  trunc( - 1.002 ) value  from  dual

  
5 .四舍五入
S:
select   round ( 1.23456 , 4 ) value  1.23460
O:
select   round ( 1.23456 , 4 ) value  from  dual  1.2346

  
6 .e为底的幂 
S:
select   Exp ( 1 ) value  2.7182818284590451  
O:
select   Exp ( 1 ) value  from  dual  2.71828182

  
7 .取e为底的对数
S:
select   log ( 2.7182818284590451 ) value  1
O:
select  ln( 2.7182818284590451 ) value  from  dual;  1

   
8 .取10为底对数
S:
select   log10 ( 10 ) value  1
O:
select   log ( 10 , 10 ) value  from  dual;  1

  
9 .取平方
S:
select   SQUARE ( 4 ) value  16
O:
select   power ( 4 , 2 ) value  from  dual  16

  
10 .取平方根
S:
select   SQRT ( 4 ) value  2
O:
select   SQRT ( 4 ) value  from  dual  2

  
11 .求任意数为底的幂
S:
select   power ( 3 , 4 ) value  81
O:
select   power ( 3 , 4 ) value  from  dual  81

  
12 .取随机数
S:
select   rand () value 
O:
select  sys.dbms_random.value( 0 , 1 ) value  from  dual;

  
13 .取符号
S:
select   sign ( - 8 ) value  - 1
O:
select   sign ( - 8 ) value  from  dual  - 1
-- --------数学函数

  
14 . 圆周率
S:
SELECT   PI () value  3.1415926535897931
O:不知道

  
15 . sin , cos , tan  参数都以弧度为单位
例如:
select   sin ( PI () / 2 ) value 得到1(SQLServer)

  
16 . Asin , Acos , Atan ,Atan2 返回弧度

  
17 .弧度角度互换(SQLServer,Oracle不知道)
DEGREES :弧度 - 〉角度
RADIANS :角度 - 〉弧度

  
-- -------数值间比较

  
18 . 求集合最大值
S:
select   max (value) value  from  
(
select   1  value
union
select   - 2  value
union
select   4  value
union
select   3  value)a

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

  
19 . 求集合最小值
S:
select   min (value) value  from  
(
select   1  value
union
select   - 2  value
union
select   4  value
union
select   3  value)a

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

  
20 .如何处理 null值(F2中的null以10代替)
S:
select  F1, IsNull (F2, 10 ) value  from  Tbl
O:
select  F1,nvl(F2, 10 ) value  from  Tbl

  
-- ------数值间比较

  
21 .求字符序号
S:
select   ascii ( ' a ' ) value
O:
select   ascii ( ' a ' ) value  from  dual

  
22 .从序号求字符
S:
select   char ( 97 ) value
O:
select  chr( 97 ) value  from  dual

  
23 .连接
S:
select   ' 11 ' + ' 22 ' + ' 33 '  value
O:
select  CONCAT( ' 11 ' , ' 22 ' ) || 33  value  from  dual

  
23 .子串位置  -- 返回3
S: select   CHARINDEX ( ' s ' , ' sdsq ' , 2 ) value 
O:
select  INSTR( ' sdsq ' , ' s ' , 2 ) value  from  dual

  
23 .模糊子串的位置  -- 返回2,参数去掉中间%则 返回7
S: select   patindex ( ' %d%q% ' , ' sdsfasdqe ' ) value 
O:oracle没发现,但是instr可以通过第四霾问 刂瞥鱿 执问?BR
>    select  INSTR( ' sdsfasdqe ' , ' sd ' , 1 , 2 ) value  from  dual 返回6

  
24 .求子串
S:
select   substring ( ' abcd ' , 2 , 2 ) value 
O:
select  substr( ' abcd ' , 2 , 2 ) value  from  dual

  
25 .子串代替 返回 aijklmnef
S:
SELECT   STUFF ( ' abcdef ' 2 3 ' ijklmn ' ) value
O:
SELECT   Replace ( ' abcdef ' ' bcd ' ' ijklmn ' ) value  from  dual

  
26 .子串全部替换
S: 没发现
O:
select  Translate( ' fasdbfasegas ' , ' fa ' , ' '  ) value  from  dual

  
27 .长度
S:
len , datalength
O:length

  
28 . 大小写转换  lower , upper

  
29 .单词首字母大写
S:没发现
O:
select  INITCAP( ' abcd dsaf df ' ) value  from  dual

  
30 .左补空格 (LPAD的第一个参数为空格则同space函数)
S:
select   space ( 10 ) + ' abcd '  value
O:
select  LPAD( ' abcd ' , 14 ) value  from  dual

  
31 .右补空格(RPAD的第一个参数为空格则同space函数)
S:
select   ' abcd ' + space ( 10 ) value
O:
select  RPAD( ' abcd ' , 14 ) value  from  dual

  
32 .删除空格
S:
ltrim , rtrim
O:
ltrim , rtrim ,trim

  
33 . 重复字符串
S:
select   REPLICATE ( ' abcd ' , 2 ) value 
O:没发现

  
34 .发音相似性比较(这两个单词返回值一样,发音相同)
S:
SELECT   SOUNDEX  ( ' Smith ' ),  SOUNDEX  ( ' Smythe ' )
O:
SELECT   SOUNDEX  ( ' Smith ' ),  SOUNDEX  ( ' Smythe ' from  dual
SQLServer中 用SELECT 
DIFFERENCE ( ' Smithers ' ' Smythers ' ) 比较soundex的 差
返回0
- 4 ,4为同音,1最高

  
-- ------------日期函数

  
35 .系统时间
S:
select   getdate () value
O:
select  sysdate value  from  dual

   
36 .前后几日
直接与整数相加减

  
37 .求日期
S:
select   convert ( char ( 10 ), getdate (), 20 ) value
O:
select  trunc(sysdate) value  from  dual
select  to_char(sysdate, ' yyyy-mm-dd ' ) value  from  dual

  
38 .求时间
S:
select   convert ( char ( 8 ), getdate (), 108 ) value
O:
select  to_char(sysdate, ' hh24:mm:ss ' ) value  from  dual

  
39 .取日期时间的其他部分
S:
DATEPART  和  DATENAME  函数 (第一个参数决定) 
O: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 无效)
-- --------------------------------------------

  
40 .当月最后一天
S:不知道
O:
select  LAST_DAY(sysdate) value  from  dual

  
41 .本星期的某一天(比如星期日)
S:不知道
O:
SELECT  Next_day(sysdate, 7 ) vaule  FROM  DUAL;

  
42 .字符串转时间
S: 可以直接转或者select 
cast ( ' 2004-09-08 ' as   datetime ) value
O:
SELECT  To_date( ' 2004-01-05 22:09:38 ' , ' yyyy-mm-dd hh24-mi-ss ' ) vaule  FROM  DUAL;

  
43 .求两日期某一部分的差(比如秒)
S:
select   datediff (ss, getdate (), getdate () + 12.3 ) value
O: 直接用两个日期相减(比如d1
- d2 = 12.3
SELECT  (d1 - d2) * 24 * 60 * 60  vaule  FROM  DUAL;

  
44 .根据差值求新的日期(比如分钟)
S:
select   dateadd (mi, 8 , getdate ()) value
O:
SELECT  sysdate + 8 / 60 / 24  vaule  FROM  DUAL;

  
45 .求不同时区时间
S: 不知道
O:
SELECT  New_time(sysdate, ' ydt ' , ' gmt '  ) vaule  FROM  DUAL;

-- ---时区 参数,北京在东8区应该是Ydt-------
AST ADT 大西洋标准时间
BST BDT 白令海标准时间
CST CDT 中 部标准时间
EST EDT 东部标准时间
GMT 格林尼治标准时间
HST HDT 阿拉斯加—夏威夷标准时间
MST MDT 山 区标准时间
NST 纽芬兰标准时间
PST PDT 太平洋标准时间
YST YDT YUKON标准时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值