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     
    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、付费专栏及课程。

余额充值