SQLServer和Oracle的常用函数对比

-- 语句有所不同,下为函数的区别
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 , 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 ) value from dual

  
25 .子串代替 返回aijklmnef
  S:
SELECT STUFF ( ' abcdef ' , 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 ), 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 () + 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标准时间 
Oracle支持的字符函数和它们的Microsoft SQL Server等价函数:

函数 Oracle Microsoft SQL Server
把字符转换为ASCII
ASCII ASCII
字串连接 CONCAT (expression
+ expression)
把ASCII转换为字符 CHR
CHAR
返回字符串中的开始字符(左起) INSTR
CHARINDEX
把字符转换为小写
LOWER LOWER
把字符转换为大写
UPPER UPPER
填充字符串的左边 LPAD N
/ A
清除开始的空白
LTRIM LTRIM
清除尾部的空白
RTRIM RTRIM
字符串中的起始模式(pattern) INSTR
PATINDEX
多次重复字符串 RPAD
REPLICATE
字符串的语音表示
SOUNDEX SOUNDEX
重复空格的字串 RPAD
SPACE
从数字数据转换为字符数据 TO_CHAR
STR
子串 SUBSTR
SUBSTRING
替换字符
REPLACE STUFF
将字串中的每个词首字母大写 INITCAP N
/ A
翻译字符串 TRANSLATE N
/ A
字符串长度 LENGTH DATELENGTH
or LEN
列表中最大的字符串 GREATEST N
/ A
列表中最小的字符串 LEAST N
/ A
如果为NULL则转换字串 NVL
ISNULL

 

日期函数

函数 Oracle Microsoft SQL Server
日期相加 (date
column +/- value) or
ADD_MONTHS
DATEADD
两个日期的差 (date
column +/- value) or
MONTHS_BETWEEN
DATEDIFF
当前日期和时间 SYSDATE
GETDATE ()
一个月的最后一天 LAST_DAY N
/ A
时区转换 NEW_TIME N
/ A
日期后的第一个周日 NEXT_DAY N
/ A
代表日期的字符串 TO_CHAR
DATENAME
代表日期的整数 TO_NUMBER
(TO_CHAR))
DATEPART
日期舍入
ROUND CONVERT
日期截断 TRUNC
CONVERT
字符串转换为日期 TO_DATE
CONVERT
如果为NULL则转换日期 NVL
ISNULL

 

转换函数

函数 Oracle Microsoft SQL Server
数字转换为字符 TO_CHAR
CONVERT
字符转换为数字 TO_NUMBER
CONVERT
日期转换为字符 TO_CHAR
CONVERT
字符转换为日期 TO_DATE
CONVERT
16进制转换为2进制 HEX_TO_RAW
CONVERT
2进制转换为16进制 RAW_TO_HEX
CONVERT

 

其它行级别的函数

函数 Oracle Microsoft SQL Server
返回第一个非空表达式 DECODE
COALESCE
当前序列值 CURRVAL N
/ A
下一个序列值 NEXTVAL N
/ A
如果exp1
= exp2,返回null DECODE NULLIF
用户登录账号ID数字 UID
SUSER_ID
用户登录名
USER SUSER_NAME
用户数据库ID数字 UID
USER_ID
用户数据库名
USER USER_NAME
当前用户
CURRENT_USER CURRENT_USER
用户环境(audit trail) USERENV N
/ A
在CONNECT BY子句中的级别
LEVEL N / A

 

合计函数

函数 Oracle Microsoft SQL Server
Average
AVG AVG
Count COUNT COUNT
Maximum
MAX MAX
Minimum
MIN MIN
Standard deviation STDDEV
STDEV or STDEVP
Summation
SUM SUM
Variance VARIANCE
VAR or VARP

Oracle还有一个有用的函数EXTRACT,提取并且返回日期时间或时间间隔表达式中特定的时间域:
EXTRACT(
YEAR FROM 日期) 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


本篇内容主要讲解“sqlalchemy的常用数据类型怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sqlalche...
今天小编给大家分享一下sqlServer实现分页查询的方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
这篇文章主要介绍“sqlmap之osshell怎么使用”,在日常操作中,相信很多人在sqlmap之osshell怎么使用问题上存在疑惑,小编查阅了各式资料,整理出
本篇内容介绍了“SQL注入的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
1. mssql权限sa权限:数据库操作,文件管理,命令执行,注册表读取等system。是mssql的最高权限db权限:文件管理,数据库操作等 users-administratorspublic权限:数据库操作 guest-users2、sql server注入执行命令查
sql执行计划如何查看?在SPL庞大的数据中我们不知道如何查看实际数据库中发生了什么事情,有必要定期进行查询优化和索引否则会影响我们后期的SQL的查询速度。那么针对这样的问题我们必须要知道SQL执行的计划,在本文中winwin7小编给大家分享下SQL执
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点应用非常广泛。不过在使用中,我们会遇到非常多的错误,面对这么庞大的数据库环境,当然会有精确的错误代码的对照季,下面小编分享的
SQL Server本地账户无法登陆出现错误提示:error:40-Could not open a connenction to SQL Server的问题很常见,对于初学者来说可能不知道如何解决,一起来看看下面的解决方案。解决步骤如下:1、这种情况需要开启 SQL Server service
微软推出的SQL2008是一款非常好用的数据库软件,它稳定、功能强大,为众多企业提供了最佳的数据库解决方案,那么我们如何在Windows中安装它呢,一些朋友对SQL Server 2008的安装过程还不是很熟悉,下面就一起来看看SQL Server 2008详细安装图解...
本页概要如果您使用的是 SQL Server 2005备份和还原Sp_detach_db 和 Sp_attach_db 存储过程关于排序规则的说明导入和导出数据(在 SQL Server 数据库之间复
DBCC CHECKIDENT 检查指定表的当前标识值,如有必要,还对标识值进行更正。 语法 DBCC CHECKIDENT ( 'table_name' [ , { NORESEED
这里对 SQL Server 字符串函数进行分门别类地列出,便于查阅和记忆,相信大家都在其它方面有高深的编程基础,从字面上来说大家都知道这些函数的意义,就不对这些函数作过多的解释了,主要谈些经验,具体
查询及删除重复记录的方法 1、查找表(people)中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select*frompeoplewherepeopleIdin(selectpe
微软发SQL Server 2008第二个CTP预览版from: http://news.csdn.net/n/20070807/107158.html8月7日消息,微软公司本周发布了SQL Serv
症状当您将数据库备份恢复到另一台服务器时,可能会遇到孤立用户的问题。SQL Server 联机丛书中的孤立用户疑难解答主题中没有讲述解决此问题的具体步骤。本文介绍了如何解决孤立用户问题。更多信息虽然术
当登录SQL Server 2005时可能碰到错误: 'No Process is on the Other End of the Pipe'。解决方法:(1)Open up SQL
概要本文描述如何映射标准登录和集成登录来解决在运行 SQL Server 的服务器之间移动数据库时的权限问题。更多信息当您将数据库从一个运行 SQL Server 的服务器移到另一个运行 SQL Se
----------------------------------------问题:该用户与可信的SQL SERVER 连接无关联使用sa用户或自建用户使用“SQL SERVER 身份认证”连接数据
更新日期: 2007 年 5 月 20 日 使用下表可以确定各种版本的 Microsoft SQL Server 2005 支持哪些功能。有关 SQL Server 2005 Enterprise E
当从Excel导入数据到Sql Sever中,可能会出现以下问题:
对于指定的缓冲区大小而言,源列的数据太大