熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

SQL Server和Oracle的常用函數對比

2022-06-13   來源: Oracle 

  數學函數
  絕對值
  S:select abs() value
  O:select abs() value from dual
  
  取整(大)
  S:select ceiling() value
  O:select ceil() value from dual
  
  取整(小)
  S:select floor() value
  O:select floor() value from dual
  
  取整(截取)
  S:select cast( as int) value
  O:select trunc() value from dual
  
  四捨五入
  S:select round() value
  O:select round() value from dual
  
  e為底的冪
  S:select Exp() value
  O:select Exp() value from dual
  
  取e為底的對數
  S:select log() value
  O:select ln() value from dual;
  
  為底對數
  S:select log() value
  O:select log() value from dual;
  
  取平方
  S:select SQUARE() value
  O:select power() value from dual
  
  取平方根
  S:select SQRT() value
  O:select SQRT() value from dual
  
  求任意數為底的冪
  S:select power() value
  O:select power() value from dual
  
  取隨機數
  S:select rand() value
  O:select sysdbms_randomvalue() value from dual;
  
  取符號
  S:select sign() value
  O:select sign() value from dual
  
  數學函數
  圓周率
  S:SELECT PI() value
  O:不知道
  
  sincostan 參數都以弧度為單位
  例如select sin(PI()/) value 得到(SQLServer)
  
  AsinAcosAtanAtan 返回弧度
  
  弧度角度互換(SQLServerOracle不知道)
  DEGREES弧度〉角度
  RADIANS角度〉弧度
  
  數值間比較
   求集合最大值
  S:select max(value) value from
  (select value
  union
  select value
  union
  select value
  union
  select value)a
  
  O:select greatest() value from dual
  
   求集合最小值
  S:select min(value) value from
  (select value
  union
  select value
  union
  select value
  union
  select value)a
  
  O:select least() value from dual
  
  如何處理null值(F中的null以代替)
  S:select FIsNull(F) value from Tbl
  O:select Fnvl(F) value from Tbl
  
  數值間比較
  求字符序號
  S:select ascii(a) value
  O:select ascii(a) value from dual
  
  從序號求字符
  S:select char() value
  O:select chr() value from dual
  
  連接
  S:select ++ value
  O:select CONCAT()|| value from dual
  
  子串位置 返回
  S:select CHARINDEX(ssdsq) value
  O:select INSTR(sdsqs) value from dual
  
  模糊子串的位置 返回參數去掉中間%則返回
  S:select patindex(%d%q%sdsfasdqe) value
  O:oracle沒發現但是instr可以通過第四霾問刂瞥鱿執問?BR>  select INSTR(sdsfasdqesd) value from dual 返回
  
  求子串
  S:select substring(abcd) value
  O:select substr(abcd) value from dual
  
  子串代替 返回aijklmnef
  S:SELECT STUFF(abcdef ijklmn) value
  O:SELECT Replace(abcdef bcd ijklmn) value from dual
  
  子串全部替換
  S:沒發現
  O:select Translate(fasdbfasegasfa ) value from dual
  
  長度
  S:lendatalength
  O:length
  
  大小寫轉換 lowerupper
  
  單詞首字母大寫
  S:沒發現
  O:select INITCAP(abcd dsaf df) value from dual
  
  左補空格(LPAD的第一個參數為空格則同space函數)
  S:select space()+abcd value
  O:select LPAD(abcd) value from dual
  
  右補空格(RPAD的第一個參數為空格則同space函數)
  S:select abcd+space() value
  O:select RPAD(abcd) value from dual
  
  刪除空格
  S:ltrimrtrim
  O:ltrimrtrimtrim
  
   重復字符串
  S:select REPLICATE(abcd) value
  O:沒發現
  
  發音相似性比較(這兩個單詞返回值一樣發音相同)
  S:SELECT SOUNDEX (Smith) SOUNDEX (Smythe)
  O:SELECT SOUNDEX (Smith) SOUNDEX (Smythe) from dual
  SQLServer中用SELECT DIFFERENCE(Smithers Smythers) 比較soundex的差
  返回為同音最高
  
  日期函數
  系統時間
  S:select getdate() value
  O:select sysdate value from dual
  
  前後幾日
  直接與整數相加減
  
  求日期
  S:select convert(char()getdate()) value
  O:select trunc(sysdate) value from dual
  select to_char(sysdateyyyymmdd) value from dual
  
  求時間
  S:select convert(char()getdate()) value
  O:select to_char(sysdatehh:mm:ss) value from dual
  
  取日期時間的其他部分
  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 hhhhhh (hhhh S無效)
  minute mi n (n O無效)
  second ss s (s O無效)
  millisecond ms (O無效)
  
  
  當月最後一天
  S:不知道
  O:select LAST_DAY(sysdate) value from dual
  
  本星期的某一天(比如星期日)
  S:不知道
  O:SELECT Next_day(sysdate) vaule FROM DUAL;
  
  字符串轉時間
  S:可以直接轉或者select cast(as datetime) value
  O:SELECT To_date( ::yyyymmdd hhmiss) vaule FROM DUAL;
  
  求兩日期某一部分的差(比如秒)
  S:select datediff(ssgetdate()getdate()+) value
  O:直接用兩個日期相減(比如dd=
  SELECT (dd)*** vaule FROM DUAL;
  
  根據差值求新的日期(比如分鐘)
  S:select dateadd(migetdate()) value
  O:SELECT sysdate+// vaule FROM DUAL;
  
  求不同時區時間
  S:不知道
  O:SELECT New_time(sysdateydtgmt ) vaule FROM DUAL;
  
  時區參數北京在東區應該是Ydt
  AST ADT 大西洋標准時間
  BST BDT 白令海標准時間
  CST CDT 中部標准時間
  EST EDT 東部標准時間
  GMT 格林尼治標准時間
  HST HDT 阿拉斯加—夏威夷標准時間
  MST MDT 山區標准時間
  NST 紐芬蘭標准時間
  PST PDT 太平洋標准時間
  YST YDT YUKON標准時間
  
From:http://tw.wingwit.com/Article/program/Oracle/201311/18585.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.