SQLServer和Oracle常用函数对比

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
procedure Pro_SubPro
(
dw_in in varchar2,
cur out pkg_general.ROW_CURSOR
)
as
begin
open cur for
select yqmc from fle80 where dwbm =dw_in;
end Pro_SubPro;

procedure Pro_MainPro(
dw_in in varchar2
)
as
mc NVARCHAR2( 20);
cur pkg_general.ROW_CURSOR;
begin
Pro_SubPro(dw_in,cur);
fetch cur into mc;
loop
exit when cur %notfound;
dbms_output.put_line(mc);
fetch cur into mc;
end loop;
end Pro_MainPro;
数学函数
在oracle 中distinct关键字可以显示相同记录只显示一条
   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可以通过第四个参数控制出现次数
   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: DATEPARTDATENAME 函数 (第一个参数决定)
  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标准时间



本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2006/03/15/350804.html,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
4月前
|
SQL 索引
在 SQL Server 中使用 STRING_AGG 函数
【8月更文挑战第5天】
1242 2
在 SQL Server 中使用 STRING_AGG 函数
|
1月前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
22 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
5月前
|
SQL Oracle 算法
|
4月前
|
SQL 数据库
|
4月前
|
SQL 缓存 BI
在 SQL Server 中使用 SPACE 函数
【8月更文挑战第5天】
240 6
在 SQL Server 中使用 SPACE 函数
|
4月前
|
SQL 数据采集 数据处理
如何在 SQL Server 中使用 LEN 函数
【8月更文挑战第9天】
190 1
如何在 SQL Server 中使用 LEN 函数
|
4月前
|
SQL 数据格式
在 SQL Server 中使用 STR 函数
【8月更文挑战第5天】
318 3
在 SQL Server 中使用 STR 函数
|
4月前
|
SQL 监控 索引
如何在 SQL Server 中使用 `PATINDEX` 函数
【8月更文挑战第8天】
464 9
|
4月前
|
SQL 关系型数据库 MySQL
如何在 SQL Server 中使用 `REPLACE` 函数
【8月更文挑战第8天】
816 9
|
4月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
480 0

推荐镜像

更多
下一篇
DataWorks