SQLServer和Oracle常用函数对比

None.gif procedure  Pro_SubPro
None.gif  (
None.gif  dw_in 
in   varchar2 ,
None.gif  cur out pkg_general.ROW_CURSOR
None.gif  )
None.gif  
as
None.gif  
begin
None.gif  
open  cur  for
None.gif  
select  yqmc  from  fle80  where  dwbm = dw_in;
None.gif  
end  Pro_SubPro;
None.gif  
None.gif  
procedure  Pro_MainPro(
None.gif  dw_in 
in   varchar2
None.gif  )
None.gif  
as
None.gif  mc NVARCHAR2(
20 );
None.gif  cur pkg_general.ROW_CURSOR;
None.gif  
begin
None.gif  Pro_SubPro(dw_in,cur);
None.gif  
fetch  cur  into  mc;
None.gif  loop
None.gif  
exit   when  cur % notfound;
None.gif  dbms_output.put_line(mc);
None.gif  
fetch  cur  into  mc;
None.gif  
end  loop;
None.gif  
end  Pro_MainPro; 
数学函数
None.gif         在oracle 中distinct关键字可以显示相同记录只显示一条
None.gif   1 .绝对值 
None.gif  S:
select   abs ( - 1 ) value 
None.gif  O:
select   abs ( - 1 ) value  from  dual 
None.gif
None.gif  
2 .取整(大) 
None.gif  S:
select   ceiling ( - 1.001 ) value 
None.gif  O:
select  ceil( - 1.001 ) value  from  dual 
None.gif
None.gif  
3 .取整(小) 
None.gif  S:
select   floor ( - 1.001 ) value 
None.gif  O:
select   floor ( - 1.001 ) value  from  dual 
None.gif
None.gif  
4 .取整(截取) 
None.gif  S:
select   cast ( - 1.002   as   int ) value 
None.gif  O:
select  trunc( - 1.002 ) value  from  dual 
None.gif
None.gif  
5 .四舍五入 
None.gif  S:
select   round ( 1.23456 , 4 ) value  1.23460  
None.gif  O:
select   round ( 1.23456 , 4 ) value  from  dual  1.2346  
None.gif
None.gif  
6 .e为底的幂 
None.gif  S:
select   Exp ( 1 ) value  2.7182818284590451  
None.gif  O:
select   Exp ( 1 ) value  from  dual  2.71828182  
None.gif
None.gif  
7 .取e为底的对数 
None.gif  S:
select   log ( 2.7182818284590451 ) value  1  
None.gif  O:
select  ln( 2.7182818284590451 ) value  from  dual;  1  
None.gif
None.gif  
8 .取10为底对数 
None.gif  S:
select   log10 ( 10 ) value  1  
None.gif  O:
select   log ( 10 , 10 ) value  from  dual;  1  
None.gif
None.gif  
9 .取平方 
None.gif  S:
select   SQUARE ( 4 ) value  16  
None.gif  O:
select   power ( 4 , 2 ) value  from  dual  16  
None.gif
None.gif  
10 .取平方根 
None.gif  S:
select   SQRT ( 4 ) value  2  
None.gif  O:
select   SQRT ( 4 ) value  from  dual  2  
None.gif
None.gif  
11 .求任意数为底的幂 
None.gif  S:
select   power ( 3 , 4 ) value  81  
None.gif  O:
select   power ( 3 , 4 ) value  from  dual  81  
None.gif
None.gif  
12 .取随机数 
None.gif  S:
select   rand () value 
None.gif  O:
select  sys.dbms_random.value( 0 , 1 ) value  from  dual; 
None.gif
None.gif  
13 .取符号 
None.gif  S:
select   sign ( - 8 ) value  - 1  
None.gif  O:
select   sign ( - 8 ) value  from  dual  - 1  
None.gif
None.gif  
14 .圆周率 
None.gif  S:
SELECT   PI () value  3.1415926535897931  
None.gif  O:不知道 
None.gif
None.gif  
15 . sin , cos , tan  参数都以弧度为单位 
None.gif  例如:
select   sin ( PI () / 2 ) value 得到1(SQLServer) 
None.gif
None.gif  
16 . Asin , Acos , Atan ,Atan2 返回弧度 
None.gif
None.gif  
17 .弧度角度互换(SQLServer,Oracle不知道) 
None.gif  
DEGREES :弧度 - 〉角度 
None.gif  
RADIANS :角度 - 〉弧度 
None.gif
None.gif数值间比较 
None.gif
None.gif  
18 . 求集合最大值 
None.gif  S:
select   max (value) value  from  
None.gif  (
select   1  value 
None.gif  
union  
None.gif  
select   - 2  value 
None.gif  
union  
None.gif  
select   4  value 
None.gif  
union  
None.gif  
select   3  value)a 
None.gif
None.gif  O:
select  greatest( 1 , - 2 , 4 , 3 ) value  from  dual 
None.gif
None.gif  
19 . 求集合最小值 
None.gif  S:
select   min (value) value  from  
None.gif  (
select   1  value 
None.gif  
union  
None.gif  
select   - 2  value 
None.gif  
union  
None.gif  
select   4  value 
None.gif  
union  
None.gif  
select   3  value)a 
None.gif
None.gif  O:
select  least( 1 , - 2 , 4 , 3 ) value  from  dual 
None.gif
None.gif  
20 .如何处理null值(F2中的null以10代替) 
None.gif  S:
select  F1, IsNull (F2, 10 ) value  from  Tbl 
None.gif  O:
select  F1,nvl(F2, 10 ) value  from  Tbl 
None.gif
None.gif  
21 .求字符序号 
None.gif  S:
select   ascii ( ' a ' ) value 
None.gif  O:
select   ascii ( ' a ' ) value  from  dual 
None.gif
None.gif  
22 .从序号求字符 
None.gif  S:
select   char ( 97 ) value 
None.gif  O:
select  chr( 97 ) value  from  dual 
None.gif
None.gif  
23 .连接 
None.gif  S:
select   ' 11 ' + ' 22 ' + ' 33 '  value 
None.gif  O:
select  CONCAT( ' 11 ' , ' 22 ' )   33  value  from  dual 
None.gif
None.gif
23 .子串位置  -- 返回3 
None.gif
  S: select   CHARINDEX ( ' s ' , ' sdsq ' , 2 ) value 
None.gif  O:
select  INSTR( ' sdsq ' , ' s ' , 2 ) value  from  dual 
None.gif
None.gif  
23 .模糊子串的位置  -- 返回2,参数去掉中间%则返回7 
None.gif
  S: select   patindex ( ' %d%q% ' , ' sdsfasdqe ' ) value 
None.gif  O:oracle没发现,但是instr可以通过第四个参数控制出现次数 
None.gif  
select  INSTR( ' sdsfasdqe ' , ' sd ' , 1 , 2 ) value  from  dual 返回6 
None.gif
None.gif  
24 .求子串 
None.gif  S:
select   substring ( ' abcd ' , 2 , 2 ) value 
None.gif  O:
select  substr( ' abcd ' , 2 , 2 ) value  from  dual 
None.gif
None.gif  
25 .子串代替 返回aijklmnef 
None.gif  S:
SELECT   STUFF ( ' abcdef ' 2 3 ' ijklmn ' ) value 
None.gif  O:
SELECT   Replace ( ' abcdef ' ' bcd ' ' ijklmn ' ) value  from  dual 
None.gif
None.gif  
26 .子串全部替换 
None.gif  S:没发现 
None.gif  O:
select  Translate( ' fasdbfasegas ' , ' fa ' , ' '  ) value  from  dual 
None.gif
None.gif  
27 .长度 
None.gif  S:
len , datalength  
None.gif  O:length 
None.gif  
28 .大小写转换  lower , upper  
None.gif
None.gif  
29 .单词首字母大写 
None.gif  S:没发现 
None.gif  O:
select  INITCAP( ' abcd dsaf df ' ) value  from  dual 
None.gif
None.gif  
30 .左补空格(LPAD的第一个参数为空格则同space函数) 
None.gif  S:
select   space ( 10 ) + ' abcd '  value 
None.gif  O:
select  LPAD( ' abcd ' , 14 ) value  from  dual 
None.gif
None.gif  
31 .右补空格(RPAD的第一个参数为空格则同space函数) 
None.gif  S:
select   ' abcd ' + space ( 10 ) value 
None.gif  O:
select  RPAD( ' abcd ' , 14 ) value  from  dual 
None.gif
None.gif  
32 .删除空格 
None.gif  S:
ltrim , rtrim  
None.gif  O:
ltrim , rtrim ,trim 
None.gif
None.gif  
33 . 重复字符串 
None.gif  S:
select   REPLICATE ( ' abcd ' , 2 ) value 
None.gif  O:没发现 
None.gif
None.gif  
34 .发音相似性比较(这两个单词返回值一样,发音相同) 
None.gif  S:
SELECT   SOUNDEX  ( ' Smith ' ),  SOUNDEX  ( ' Smythe '
None.gif  O:
SELECT   SOUNDEX  ( ' Smith ' ),  SOUNDEX  ( ' Smythe ' from  dual 
None.gif  SQLServer中用SELECT 
DIFFERENCE ( ' Smithers ' ' Smythers ' ) 比较soundex的差 
None.gif  返回0
- 4 ,4为同音,1最高 
None.gif
None.gif日期函数 
None.gif  
35 .系统时间 
None.gif  S:
select   getdate () value 
None.gif  O:
select  sysdate value  from  dual 
None.gif
None.gif  
36 .前后几日 
None.gif  直接与整数相加减 
None.gif
None.gif  
37 .求日期 
None.gif  S:
select   convert ( char ( 10 ), getdate (), 20 ) value 
None.gif  O:
select  trunc(sysdate) value  from  dual 
None.gif  
select  to_char(sysdate, ' yyyy-mm-dd ' ) value  from  dual 
None.gif
None.gif  
38 .求时间 
None.gif  S:
select   convert ( char ( 8 ), getdate (), 108 ) value 
None.gif  O:
select  to_char(sysdate, ' hh24:mm:ss ' ) value  from  dual 
None.gif
None.gif
39 .取日期时间的其他部分 
None.gif  S:
DATEPART  和  DATENAME  函数 (第一个参数决定) 
None.gif  O:to_char函数 第二个参数决定 
None.gif
None.gif  参数
-- -------------------------------下表需要补充 
None.gif
   year  yy, yyyy 
None.gif  quarter qq, q (季度) 
None.gif  
month  mm, m (m O无效) 
None.gif  dayofyear dy, y (O表星期) 
None.gif  
day  dd, d (d O无效) 
None.gif  week wk, ww (wk O无效) 
None.gif  weekday dw (O不清楚) 
None.gif  Hour hh,hh12,hh24 (hh12,hh24 S无效) 
None.gif  minute mi, n (n O无效) 
None.gif  second ss, s (s O无效) 
None.gif  millisecond ms (O无效) 
None.gif  
-- -------------------------------------------- 
None.gif

None.gif  
40 .当月最后一天 
None.gif  S:不知道 
None.gif  O:
select  LAST_DAY(sysdate) value  from  dual 
None.gif
None.gif  
41 .本星期的某一天(比如星期日) 
None.gif  S:不知道 
None.gif  O:
SELECT  Next_day(sysdate, 7 ) vaule  FROM  DUAL; 
None.gif
None.gif  
42 .字符串转时间 
None.gif  S:可以直接转或者select 
cast ( ' 2004-09-08 ' as   datetime ) value 
None.gif  O:
SELECT  To_date( ' 2004-01-05 22:09:38 ' , ' yyyy-mm-dd hh24-mi-ss ' ) vaule  FROM  DUAL; 
None.gif
None.gif  
43 .求两日期某一部分的差(比如秒) 
None.gif  S:
select   datediff (ss, getdate (), getdate () + 12.3 ) value 
None.gif  O:直接用两个日期相减(比如d1
- d2 = 12.3 ) 
None.gif  
SELECT  (d1 - d2) * 24 * 60 * 60  vaule  FROM  DUAL; 
None.gif
None.gif  
44 .根据差值求新的日期(比如分钟) 
None.gif  S:
select   dateadd (mi, 8 , getdate ()) value 
None.gif  O:
SELECT  sysdate + 8 / 60 / 24  vaule  FROM  DUAL; 
None.gif
None.gif  
45 .求不同时区时间 
None.gif  S:不知道 
None.gif  O:
SELECT  New_time(sysdate, ' ydt ' , ' gmt '  ) vaule  FROM  DUAL; 
None.gif
None.gif  
-- ---时区参数,北京在东8区应该是Ydt------- 
None.gif
  AST ADT 大西洋标准时间 
None.gif  BST BDT 白令海标准时间 
None.gif  CST CDT 中部标准时间 
None.gif  EST EDT 东部标准时间 
None.gif  GMT 格林尼治标准时间 
None.gif  HST HDT 阿拉斯加?夏威夷标准时间 
None.gif  MST MDT 山区标准时间 
None.gif  NST 纽芬兰标准时间 
None.gif  PST PDT 太平洋标准时间 
None.gif  YST YDT YUKON标准时间 
None.gif
None.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值