Oracle常用函数与sql常用函数对比翻译
ORACLE常用函数汇总

ORACLE常用函数汇总Oracle是一种常用的关系型数据库管理系统,它提供了许多方便的函数来处理和操作数据。
以下是一些常用的Oracle函数的汇总:1.字符串函数:-CONCAT:用于连接两个字符串。
-UPPER:将字符串转换为大写。
-LOWER:将字符串转换为小写。
-LENGTH:返回字符串的长度。
-SUBSTR:返回字符串的子串。
2.数值函数:-ABS:返回数字的绝对值。
-ROUND:返回一个四舍五入的数字。
-TRUNC:返回数字的整数部分。
-MOD:返回两个数的余数。
3.日期函数:-SYSDATE:返回当前日期和时间。
-TO_CHAR:将日期转换为特定的格式。
-TO_DATE:将字符串转换为日期。
-ADD_MONTHS:在给定的日期上添加指定的月份。
-MONTHS_BETWEEN:返回两个日期之间的月份数。
4.聚合函数:-SUM:计算指定列的总和。
-AVG:计算指定列的平均值。
-COUNT:计算指定列的行数。
-MAX:返回指定列的最大值。
-MIN:返回指定列的最小值。
5.条件函数:-NVL:用于将空值替换为指定的值。
-NULLIF:如果两个表达式相等,则返回空值;否则返回第一个表达式的值。
-COALESCE:返回第一个非空表达式的值。
-CASE:对满足条件的表达式进行分支处理。
6.集合函数:-UNION:将两个结果集合并成一个结果集。
-INTERSECT:返回两个结果集的交集。
-MINUS:返回第一个结果集中不在第二个结果集中的行。
7.窗口函数:-ROW_NUMBER:为查询结果中的每一行分配一个唯一的行号。
-RANK:根据指定的列对结果进行排序,并为相同值的行分配相同的排名。
-DENSE_RANK:根据指定的列对结果进行排序,并为相同值的行分配连续的排名。
8.系统函数:-USER:返回当前用户的名称。
-CURRENT_TIMESTAMP:返回当前的日期和时间。
-SYSTIMESTAMP:返回当前的日期和时间,包括时区信息。
SQL Server和Oracle的通用函数

AF_BITVAL
返回整数的第几位数数值,0或1。
AF_BITVAL(ADEC,ABITNum)
参数:ADEC要检测的十进制数值
ABITNum第几位数
返回类型:0或1
参考:
T-SQL:
PL/SQL:
AF_SHL
左移位
AF_SHL(ADEC,ANum)
参数:ADEC要移位的十进制数值
ANum向左移位数
1.5
不可以使用TOP子句限制返回到结果集中的行数。
如:select top 1 * from zd_ry
2
2
函数名
语法
备注
字符类函数
AF_ASCII
返回字符表达式最左端字符的ASCII代码值。
AF_ASCII(AChar)
参数:字符表达式
返回类型:int
参考:
T-SQL:ASCII
PL/SQL:ASCII
PL/SQL:NVL
AF_ISNULLD
使用指定的替换值替换日期NULL。
AF_ISNULLD(ADate1, ADate2)
参数:ADate1为将被检查是否为NULL的日期表达式。
ADate2为在ADate1为NULL时将返回的日期表达式。
返回类型:日期
参考:
T-SQL:ISNULL
PL/SQL:NVL
参考:
T-SQL:ISNULL
PL/SQL:NVL
AF_ISNULLN
使用指定的替换值替换数值NULL。
AF_ISNULLN(ANum1, ANum2)
参数:ANum1为将被检查是否为NULL的数值表达式。
ANum2为在ANum1为NULL时将返回的数值表达式。
ORACLE常用函数和一些项目中常用的SQL语句

Oracle笔记实现中英文转换Alter session set nls_language=‘ADMIN’从已知表中复制数据和结构Create table test as select * from dept;从已知表中复制数据和结构,但是不包括数据Create table test as select * from dept where 1=2插入数据Insert into test select * from dept二、运算符+——*/可以在select 语句中使用||连接两个字段,select deptno ||dname from dept比较运算付:> >= = !=< <=逻辑运算符:not ,or集合运算符:intersect,union,union all,minus,使用ord er by 的时候必须使用位置序号,不能使用列名Select *from emp intersect select * from emp where deptno=10;Select *from emp minus select * from emp where deptno=10;---不包括重复行Select *from emp where deptno=10 union select * from emp where deptno in(10,20);----包括重复行Select *from emp where deptno=10 union all select * from emp where deptno in(10,20);三、常用ORACLE函数日期函数1)、add_month:返回日期加减至制定月份前或者后的日期Select sysdate S1,add_mouse(sysdate,10) s2,add_mouse(sysdate,5) s3 from dual2)、last_day:返回该月最后一天的日期Select last_day(sysdate) from dual3)、months_between:返回日期之前的月份数Select sysdate S1,months_between (‘1-04月-04’,sysdate) s2, months_between (‘1-4月-04’,‘1-2月-04’) s3 from dual4)、next_day(d,day):返回下个星期的日期,day为1-7或者星期日-星期六,1表示星期一Select sysdate S1,next_day(sysdate,1)S2,Next_day(sysdate,’星期日’) S3 from DUAL5)、round:舍入到最近的日期(DAY)舍入到最近的星期日6)、trunc截断到最近的日期字符函数(截取,查找位置,连接,去掉空格)大小写转换字符处理(连接,截取,返回字符串长度,字符串中某字母所在位置,替代字符,),去掉前导和后缀(某个字符)返回字符串首字母获得的ASC码值,返回ASC码值对应的字母数字函数(取整,求幂,求平方根,求余,返回固定小数位数,返回值的符号)转换函数()将日期和数字类型转换成字符类型,以及将字符类型转化为日期类型和数字类型返回登录用户名,返回表达式所需字节数,判断返回值是否为空,分组函数max,min,avg,count,sum带group by和having的分组Stdd ev返回一组值的标准偏差分组,和rollup按照分组的第一个列进行统计和最后的小计,cube产生组内所有列的统计和最后的小计临时表的建立自然连接左连接右连接用d ecod e来查找查找出来之后的替代的值子查询日期函数分组函数数值函数字符函数Nvlnvl(arg,value)代表如果前面的arg的值为null那么返回的值为后面的value 如: NVL(a,b)就是判断a是否是NULL,如果不是返回a的值,如果是返回b的值通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值Star with......connect by 是结构化查询中用到的,其基本语法是:select ... from tablename start with 条件 1 connect by 条件 2 where 条件3;例:select * from table start with org_id = 'HBHqfWGWPy' connect by prior org_id = parent_id;简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: org_id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
oracle sql常用函数

oracle sql常用函数Oracle SQL中有许多常用的函数,它们可以用于数据处理、计算和转换。
以下是一些常用的Oracle SQL函数:1. 字符串函数:`SUBSTR(str, start, length)`: 返回字符串str中从start位置开始的长度为length的子串。
`UPPER(str)`: 将字符串str转换为大写。
`LOWER(str)`: 将字符串str转换为小写。
`INSTR(str, substr)`: 返回子串substr在字符串str中第一次出现的位置。
2. 数值函数:`ROUND(num, decimal_places)`: 对num进行四舍五入,保留decimal_places位小数。
`TRUNC(num, decimal_places)`: 对num进行截断,保留decimal_places位小数。
`MOD(n, m)`: 返回n除以m的余数。
3. 日期函数:`SYSDATE`: 返回当前日期和时间。
`TO_CHAR(date, format)`: 将日期date按照指定的格式转换为字符串。
`MONTHS_BETWEEN(date1, date2)`: 返回date1和date2之间相差的月数。
4. 转换函数:`TO_NUMBER(str)`: 将字符串str转换为数值型。
`TO_DATE(str, format)`: 将字符串str按照指定的格式转换为日期型。
5. 聚合函数:`SUM(column)`: 计算指定列的总和。
`AVG(column)`: 计算指定列的平均值。
`COUNT(column)`: 计算指定列的行数。
6. 条件函数:`CASE WHEN condition THEN result1 ELSE result2 END`: 根据条件返回不同的结果。
以上列举的函数只是Oracle SQL中的一部分常用函数,还有许多其他函数可以根据具体的需求进行选择和应用。
oracle中常用函数

oracle中常用函数
在Oracle数据库中,一些常用的函数有:
1. 函数用于文本处理:
- CONCAT: 用于合并两个字符串;
- SUBSTR: 用于截取字符串的一部分;
- REPLACE: 用于替换字符串中的部分内容;
- LOWER: 用于将字符串转换为小写;
- UPPER: 用于将字符串转换为大写;
- TRIM: 用于去除字符串两端的空格;
- INSTR: 用于查找一个字符串在另一个字符串中第一次出现的位置。
2. 函数用于数值计算:
- ABS: 用于返回一个数的绝对值;
- ROUND: 用于对一个数进行四舍五入;
- TRUNC: 用于截取一个数的小数部分;
- MOD: 用于求两个数的余数;
- POWER: 用于计算一个数的指定次幂;
- SQRT: 用于计算一个数的平方根。
3. 函数用于日期和时间处理:
- SYSDATE: 用于获取当前的日期和时间;
- TO_CHAR: 用于将一个日期或时间数据类型转换为字符串;
- TO_DATE: 用于将一个字符串转换为日期或时间数据类型;
- ADD_MONTHS: 用于给一个日期加上指定的月份;
- MONTHS_BETWEEN: 用于计算两个日期之间的月份差;
- EXTRACT: 用于从一个日期中提取指定的部分,如年、月、日等。
4. 其他常用函数:
- NVL: 用于将一个空值替换为指定的值;
- DECODE: 用于根据条件进行判断和处理;
- CASE: 用于实现多路条件判断。
以上是一些常见的Oracle数据库中的函数,它们可以用于各种数据处理和计算的需求。
oracle与sqlserver字符、时间函数的不同总结

soundex(串)=soundex(串)
去空替换
Isnull(p1,p2)如果p1为空,用p2替换
nvl(p1,p2)如果p1为空,用p2代替
nvl2(p1,p2,p3)如果p1不为空输出p2,为空输出p3
nullif(p1,p2)如果p1<>p2返回p1,p1=p2返回空值
oracle与sqlserver字符、时间函数的不同总结
2011-08-16 11:01
Mark
SQLSERVER
ORACLE
字符
连接
+
||或concat
子串位置
charindex(‘子串’,‘总串’,第几次出现)
instr(‘总串’,‘子串’,第几次出现,‘总串’)
求子串
substring(‘总串’,开始位置,取得位数)
substr(总串,开始位置,共取几位)
子串替换
stuff(总串,开始位置,长度,替换串)
replace(总串,被替换,替换串)
translate(总串,子串,替换串)子串全部替换
长度
len(串)或datalength(串)
length(串)
大小写转换
Next_day(sysdate,7)“星期天”
求日期
convert(char(10),getdate(),20)
trunc(sysdate)或to_char(sysdate,'yyyy-mm-dd')
求时间
convert(char(10),getdate(),108)
to_char(sysdate,'hh24:mm:ss')
Oracle与SQLServer的SQL语法差异总结

项目
Oracle 10g
SQLServer 2008
备注
存储过程格式
CREATEORREPLACEPROCEDURE存储过程名(参数列表) IS
Begin
---存储过程内容
End存储过程名;
CREATEPROCEDURE存储过程名(参数列表) AS
--存储过程内容
From person
2、流控制语句
流控制与表达式结构很相似,只是结果表达式换成语句块
Case表达式when匹配表达式then {语句块1} else {语句块2} end case;
Eg:
case v_name
when‘张三’then
v_number := 1;
when‘李四’then
v_number:=2;
Eg:
Set @result =‘abcd’
2、通过SQL语句赋值
Select变量=表达式from表
Eg:
Select @code=code,@name=name from sysc01 where id = 1000
语句结束符
SQL语句使用分号;作为语句的结束
SQL语句不需要加分号;作为结束符(加也可)
3、动态存储过程(带入、出参)
Eg:
DECLARE@resultVARCHAR(50);
DECLARE@sqlNVARCHAR(1000);
DECLARE@paraNVARCHAR(200);
SET@sql='p_test @code,@name,@result output'
SET@para='@code varchar(10),@name varchar(10),@result varchar(50) output'
常见ORACLE与MYSQL函数对比以及一些常见的区别

常见ORACLE与MYSQL函数对⽐以及⼀些常见的区别编号类别ORACLE MYSQL注释1数字函数round(1.23456,4)round(1.23456,4)⼀样:ORACLE:select round(1.23456,4) value from dualMYSQL:select round(1.23456,4) value2abs(-1)abs(-1)功能: 将当前数据取绝对值⽤法: oracle和mysql⽤法⼀样mysql: select abs(-1) value oracle: select abs(-1) value from dual3ceil(-1.001))ceiling(-1.001)功能: 返回不⼩于 X 的最⼩整数⽤法:mysqls: select ceiling(-1.001) value oracle: select ceil(-1.001) value from dual4floor(-1.001)floor(-1.001)功能: 返回不⼤于 X 的最⼤整数值⽤法:mysql: select floor(-1.001) value oracle: select floor(-1.001) value from dual5Max(expr)/Min(expr)Max(expr)/Min(expr)功能:返回 expr 的最⼩或最⼤值。
MIN() 和 MAX() 可以接受⼀个字符串参数;在这种情况下,它们将返回最⼩或最⼤的字符串传下。
⽤法:ROACLE: select max(user_int_key) from sd_usr; MYSQL: select max(user_int_key) from sd_usr;6字符串函数ascii(str)ascii(str)功能:返回字符串 str 最左边的那个字符的 ASCII 码值。
如果 str 是⼀个空字符串,那么返回值为 0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle常用函数与sql常用函数对比翻译(一)(2011-07-21 16:55:23)转载分类:oracle标签:it1. Oracle翻译注意事项说明:我们将采取对比原有sql的语句来介绍和解释Oracle语句和编码要求1.1. Oracle常用函数4.1.1 INSTR 函数的使用概述:oracle的INSTR 函数相当于sql中的CHARINDEX函数Sql用法格式:CHARINDEX (目标字符串, 源字符串[ , 起始位置])例子1:SELECT CHARINDEX('C','ABCDE')输出结果为:3说明:在“源字符串”中查找“目标字符串”的位置。
例子2:SELECT CHARINDEX('C','ABCDEFXYZCQA',4)输出结果为:10说明:从“源字符串”的第4个字符(包含第4个字符)中查找“目标字符串”的位置。
Oracle用法格式:INSTR(源字符串, 目标字符串[,起始位置] [,匹配序号])例子1:SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) FROM DUAL;输出结果:14说明:目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。
例子2:SELECT INSTR('CSORPORATE FLOOR','OR', 3, 2) FROM DUAL;输出结果:6例子3:SELECT INSTR('CORPORA TE FLOOR', 'OR', -1, 2) FROM DUAL;输出结果:5说明:当起始位置为负数的时候,从右边开始查找。
例子4:SELECT INSTR('CORPORA TE FLOOR','OR') FROM DUAL;输出结果:2说明:此时默认起始位置1,匹配序号为14.1.2 SUBSTR 函数的使用概述:oracle的SUBSTR函数相当于sql中的SUBSTRING函数Sql用法格式:SUBSTRING ( expression , start , length )例子1:SELECT SUBSTRING('ABCDEFXYZCQA',4,3)输出结果:DEF说明:SELECT SUBSTRING('ABCDEFXYZCQA',4) 将报错:substring 函数要求有3 个参数。
Oracle用法格式: substr( string, start_position [, length ] )例子1:SELECT SUBSTR('THISISATEST', 6, 2) FROM DUAL;输出结果:SA说明:从第6个字符(包含第6个字符)开始取2位例子2:SELECT SUBSTR('THISISATEST', 6) FROM DUAL;输出结果:SATEST说明:从第6个字符(包含第6个字符)开始取到结束例子3:SELECT SUBSTR('TECHONTHENET', -8, 5) FROM DUAL;输出结果:ONTHE说明:当起始位置为负数的时候,从右边开始查找。
然后再从左往右取5位4.1.3 NVL 函数的使用概述:oracle的NVL函数相当于sql中的ISNULL函数Sql用法格式:ISNULL ( check_expression , replacement_value )说明:在check_expression 为NULL时将返回replacement_value,否则返回check_expression 的值,replacement_value 必须与check_expresssion 具有相同的类型。
Oracle用法格式:NVL ( check_expression , replacement_value )说明:用法同上4.1.4 CAST 函数的使用概述:oracle的CAST函数与sql中的相同,将某种数据类型的表达式显式转换为另一种数据类型。
说明:对于将某种数据类型的表达式显式转换为另一种数据类型,sql中提供了cast和convert两种函数,但是oracle中没有convert函数而是提供其他的函数,具体创建如下的TO_DA TE、TO_CHAR、TO_NUMBER4.1.5 TO_DATE 函数的使用概述:是把字符串转换为数据库中的日期类型例子:当我们在翻译的时候定义变量V_FIELDV ALUE 是一个V ARCAR2(20)的数据类型时,但是该变量需要作为一个过滤条件的值时如:OPEN RCT1 FOR SELECT * FROM AIR_CC_HEADER A WHERE A.FLIGHT_TIME >= V_FLIGHTFROM;这时必须把V_FLIGHTFROM变换为Date类型:V_FLIGHTFROM := TO_DA TE(V_FIELDV ALUE,'YYYY-MM-DD ,HH24:MI:SS')4.1.6 TO_CHAR和TO_NCHAR函数的使用概述:是把日期或数字转换为字符串例子1:同样我们定义了变量V_FIELDV ALUE的数据类型为V ARCAR2(20),此时我想对该日期加上一天,再拼凑到动态的oracle语句中,我们该这么做:OPEN RCT1 FOR 'SELECT * FROM AIR_CC_HEADER WHERE EXPIRE_DATE <= TO_DATE(''' || TO_CHAR((TO_DATE(V_FIELDV ALUE, 'YYYY-MM-DD HH24:MI:SS') + 1),'YYYY-MM-DD HH24:MI:SS') || ''',''YYYY-MM-DD HH24:MI:SS'')';或者OPEN RCT1 FOR 'SELECT * FROM AIR_CC_HEADER WHERE EXPIRE_DA TE<= TO_DA TE(''' || V_FIELDV ALUE || ''',''YYYY-MM-DD HH24:MI:SS'') + 1';说明:Oracle中没有像sql中有CONVERT函数,所以在翻译过程中如果有遇到类似这样的sql语句:CONVERT(V ARCHAR(20), CTN_MADE_DA TE, 120)使用TO_DA TE函数将其转换为如下写法:TO_CHAR (CTN_MADE_DATE , 'YYYY-MM-DD HH24:MI:SS')4.1.7 TO_NUMBER函数的使用概述:是将字符转换为数字4.1.8 LENGTH 函数的使用概述:Oracle的LENGTH函数相当于Sql的LEN函数,用于计算字符串长度。
4.1.9 RTRIM和LTRIM 函数概述:Oracle的RTRIM和LTRIM函数与Sql相同,RTRIM 删除字符变量中的尾随空格;LTRIM 字符删除字符变量中的起始空格。
4.1.10 REPLACE 函数的使用概述:REPLACE('STRING','S1','S2'),STRING希望被替换的字符或变量,S1被替换的字符串,S2要替换的字符串。
例子:SELECT REPLACE('ABC,DEF,GHI',',',':') FROM DUAL输出结果:ABC:DEF:GHI4.1.11 SYSDATE 函数的使用概述:oracle的SYSDA TE类似与sql的GETDA TE()函数的功能,用户获取当前时间。
Sql用法格式:例子1:SELECT GETDA TE()输出结果:2008-07-10 01:28:10.637Oracle用法格式:例子1:SELECT SYSDA TE FROM DUAL输出结果:2008-7-10 1:28:424.1.12 ADD_MONTHS()函数的使用概述:ADD_MONTHS(X,Y)函数用于计算X加上Y个月的结果。
如果Y是负数,就从X 中减去Y个月。
例子1:SELECT ADD_MONTHS(TO_DATE('2007-7-7','YYYY-MM-DD'),2) FROM DUAL 输出结果:2007-9-7例子2:SELECT ADD_MONTHS(TO_DATE('2007-7-7','YYYY-MM-DD'),-2) FROM DUAL 输出结果:2007-5-74.1.13 LAST_DAY()函数的使用概述:LAST_DAY(X)函数用于计算包含X的月的最后一天。
例子1:SELECT LAST_DAY(TO_DATE('2007-7-7','YYYY-MM-DD')) FROM DUAL;输出结果:2007-7-314.1.14 NEXT_DAY()函数的使用概述:NEXT_DAY(X,DAY)函数用于计算从X开始,下一个DAY的日期;参数DAY是一个文本字符串,例如:星期一例子1:SELECT NEXT_DAY(TO_DA TE('2008-7-19','YYYY-MM-DD'),'星期一') FROM DUAL;输出结果:2008-7-214.1.15 ROUND()函数的使用概述:ROUND(X[,UNIT])函数用于对X进行取整。
默认情况下,X取整为最近的一天。
UNIT 是一个可选字符串参数,它指明要取整的单元。
例子1:SELECT ROUND(TO_DA TE('2007-5-7','YYYY-MM-DD'),'YY') FROM DUAL;输出结果:2007-1-1例子2:SELECT ROUND(TO_DA TE('2007-8-7','YYYY-MM-DD'),'YY') FROM DUAL;输出结果:2008-1-1例子3:SELECT ROUND(TO_DA TE('2007-5-7','YYYY-MM-DD'),'MM') FROM DUAL;输出结果:2007-5-1例子4:SELECT ROUND(TO_DA TE('2007-5-17','YYYY-MM-DD'),'MM') FROM DUAL;输出结果:2007-6-1例子5:SELECT ROUND(TO_DA TE('2007-5-7 11:10:23','YYYY-MM-DD HH24:MI:SS'),'DD') FROM DUAL;输出结果:2007-5-7例子6:SELECT ROUND(TO_DA TE('2007-5-7 13:10:23','YYYY-MM-DD HH24:MI:SS'),'DD') FROM DUAL;输出结果:2007-5-8例子7:SELECT ROUND(TO_DATE('2007-5-7 13:10:23','YYYY-MM-DD HH24:MI:SS'),'HH24') FROM DUAL;输出结果:2007-5-7 13:00:00例子8:SELECT ROUND(TO_DATE('2007-5-7 13:45:23','YYYY-MM-DD HH24:MI:SS'),'HH24') FROM DUAL;输出结果:2007-5-7 14:00:004.1.16 TRUNC()函数的使用概述:TRUNC(X,UNIT)函数用于对X进行截断。