好文档 - 专业文书写作范文服务资料分享网站

oracle常用函数总结

天下 分享 时间: 加入收藏 我要投稿 点赞

1 在Oracle中,不等号有三种:<>,!=,^=

例如:select * from test where name<>'xn';

返回的结果是name不为xn,且name不空的记录。我们的目的是得到name为xn的全部记录,也包括name为空的记录。为了解决这个问题,我们可以采用以下两种方案:

select * from test where instr(concat(name,'xx'),'xn') = 0 ;

select * from test where nvl(name,'xx')<>'xn' ;

备注:null只能通过is null或者is not null来判断,其它操作符与null操作都是false。

各数据库中的字符串连接方法

1)MySQL:CONCAT()

2)Oracle:CONCAT(),||

3)SQL Server: +

例如:

SELECT 'this is '+'a test'; 返回值this a test

SELECT CONCAT('this is ','a test') from dual; 返回值this a test

SELECT 'this is '||'a test' from dual; 返回值this a test

2 instr函数:判断某个字符串是否含有指定的字符,在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。

语法:instr(sourceString,destString,start,appearPosition)

instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

其中sourceString代表源字符串;

destString代表要从源字符串中查找的子串;

start代表查找的开始位置,这个参数可选的,默认为1;

appearPosition代表想从源字符中查找出第几次出现的destString,这个参数也是可选的,默认为1

如果start的值为负数,则代表从右往左进行查找,但是位置数据仍然从左向右计算。

返回值为:查找到的字符串的位置。 例如:select instr('abcdefghbc','bc',3) position from dual; --(从第3个字符开始算起第3个字符是c,所以从3开始以后的字符串找查找bc,返回9)

POSITION ---------- 9 select instr('qinyinglianqin','qin', 1, 2) position from dual;--(从第1个字符开始,查找第2次出现子串的位置 )

POSITION ---------- 12

3 通用函数:NVL,NVL2,NULLIF,COALESCE

NVL函数的格式如下:NVL(expr1,expr2) 如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

NVL2函数的格式如下:NVL2(expr1,expr2,expr3) 如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

NULLIF(exp1,expr2) 函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

Coalesce(expr1, expr2, expr3?.. exprn) 所有表达式必须是相同类型,或者可以隐性转换为相同的类型。返回表达式中第一个非空表达式, 如有以下语句: SELECT COALESCE(NULL,NULL,3,4,5) FROM dual 其返回结果为:3

如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。

4 Round 函数 (四舍五入)

描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。

SELECT ROUND( number, [ decimal_places ] ) FROM DUAL 参数:

number : 欲处理之数值

decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ),如果decimal_places小于0则四舍五入到小数点向左第decimal_places位。 Sample :

select round(123.456, 0) from dual; 回传 123 select round(123.456, 1) from dual; 回传 123.5 select round(123.456, 3) from dual; 回传 123.456 select round(-123.456, 2) from dual; 回传 -123.46

select round(5555.6666,2.1),round(5555.6666,-2.6),round(5555.6666) from dual; 返回:5555.67 , 5600 , 5556

【相近】trunc(x[,y]) 返回截取后的值,用法同round(x[,y]),只是不四舍五入

5 trunc(x[,y])

【功能】返回x按精度y截取后的值

【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则截取到y位小数,如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。

【返回】数字

【示例】 select trunc(5555.66666,2.1),trunc(5555.66666,-2.6),trunc(5555.033333) from dual;

返回:5555.66 5500 5555

【相近】round(x[,y]) 返回截取后的值,用法同trunc(x[,y]),只是要做四舍五入

6 substr与substrb区别

说明:substr,substrb均为字符串截取函数,都带有三个参数,第一个参数为所要截取的字符串,第二个参数为strart(索引均从1开始),第三个参数为length。

SQL> select substr('今天是个好日子',3,5) from dual; ---------- 是个好日子

SQL> select substrb('今天是个好日子',3,5) from dual; ----- 天是

结论:substr是按照字来算的,而substrb()是按照字节来算的。看下面的例子:

SQL> select substr('abcdef',3,4) from dual; ----

oracle常用函数总结

1在Oracle中,不等号有三种:,!=,^=例如:select*fromtestwherename'xn';返回的结果是name不为xn,且name不空的记录。我们的目的是得到name为xn的全部记录,也包括name为空的记录。为了解决这个问题,我们可以采用以下两种方案:select*fromtestw
推荐度:
点击下载文档文档为doc格式
9pyar6gt7v10e609m87w9sc9l3ppgr019vt
领取福利

微信扫码领取福利

微信扫码分享