设为首页 收藏本站
查看: 902|回复: 0

[经验分享] oracle中一些函数的操作

[复制链接]
YunVN网友  发表于 2016-8-13 06:11:10 |阅读模式
SQL函数带有一个或者多个参数且一定有返回值
SQL函数包括单行函数、分组函数、分析函数三大类

一、单行函数  对于从表中查询的每一行只返回一个值
      可以出现在select子句和where子句中
分类:
1、字符函数
ASCII函数 :返回给定字符的ASCII码值
CHR函数 : 返回指定ASCII码值的字符
select ascii('a'),chr(65)from dual;

DSC0000.png

SUBSTR(string,start,count)函数:获取源字符串从start位置起得count个字符
select substr('abcdef',2,3) from dual;

DSC0001.png

NVL(字段,值):假如字段为空值 则用值代替它
select sal,comm,sal+nvl(comm,0) as sum from emp;

DSC0002.png

NVL2(字段,value1,value2):假如字段为空,则返回value2,若不为空,则返回value2
select sal,comm,nvl2(comm,comm,1) from emp;

DSC0003.png

NULLIF(字段,value):假如字段中的值为value,则赋为空
select comm,nullif(comm,300) from emp;

DSC0004.png

LENGTH(string):字符串的长度
select length('abcd') from dual;
select comm,length(comm) from emp;

DSC0005.png

INITCAP(string):首字母大写
select initcap('helLo')from dual;

DSC0006.png

UPPER(string):全部转换成大写
select upper('Hello') from dual;

DSC0007.png

LOWER(string):全部转换成小写
select lower('heLLO')from dual;

DSC0008.png

CONCAT(string1,string2):合并两个字符串
select concat('a','b') from dual;

DSC0009.png

REPLACE(string1,char1,char2):将指定字符串中char1字符用char2(单个或者多个)字符代替
select replace('hello','h','b')from dual;
select replace('hello','h','bb')from dual;

DSC00010.png

LPAD(string,count,char):如果string不够count位,则在string的左边用char补齐count位
select lpad('bbb',5,'a') from dual;

DSC00011.png

RPAD(string,count,char):如果string不够count位,则在string的右边用char补齐count位
select rpad('bbb',5,'a') from dual;

DSC00012.png

LTRIM(string,char):如果char中任意一个字符出现在string左边,就去掉
select ltrim('abcdef','ac') from dual;
select ltrim('abcdef','acb') from dual;

DSC00013.png

RTRIM(string,char):如果char中任意一个字符出现在string右边,就去掉
select rtrim('abcdef','df') from dual;
select rtrim('abcdef','fed') from dual;

DSC00014.png

2、数字函数
ABS(value):返回value的绝对值
select abs(-1) from dual;

DSC00015.png

CEIL(value):返回大于或等于value的最小整数
select ceil(4.0) from dual;

DSC00016.png

select ceil(4.1) from dual;

DSC00017.png

select ceil(4.5) from dual;

DSC00018.png

FLOOR(value):返回小于或等于value的最大整数
select floor(4.0) from dual;

DSC00019.png

select floor(4.1) from dual;

DSC00020.png

select floor(4.9) from dual;

DSC00021.png

ROUND(value,precious):按精度四舍五入
select round(4.77,0) from dual;

DSC00022.png

select round(4.77,1)from dual;

DSC00023.png

TRUNC(value,可选参数):按精度截断
select trunc(4.77,0) from dual;

DSC00024.png

select trunc(4.77,1) from dual;

DSC00025.png

select trunc(4.1,0) from dual;

DSC00026.png

select trunc(4.77,-1) from dual;

DSC00027.png

MOD(value1,divisor):取余
select mod(3,2) from dual;

DSC00028.png

SQRT(value):返回value的平方根
select sqrt(4) from dual;

DSC00029.png

POWER(value,exponent):返回value的exponent的指数值
select power(2,3) from dual;

DSC00030.png

3、日期函数
ADD_MONTHS(date,count) 指定日期加上count个月
--15个月后是什么时候
select add_months(sysdate,15) from dual;

DSC00031.png

SYSDATE() 获取当前系统日期
4、转换函数
  TO_DATE(2015-10-12'','YYYY-MM-DD') 将字符串类型转换成日期类型
select to_date('2015-11-08','yyyy-mm-dd');

DSC00032.png

  TO_CHAR(date,'yyyy-mm-dd') 将日期类型转换成字符串类型
select to_char(sysdate,'yyyy-mm-dd') from dual;
  TO_NUMBER('1234') 将字符串转换成数字
select to_number('1234') from dual;


二、分组函数 对整个结果集进行处理,不能与字段、单行函数一起用
select ename,sum(sal) from emp;//错误

DSC00033.png

1、SUM 函数:求和
select sum(sal) from emp;

DSC00034.png

2、AVG 函数:求平均值
select avg(sal) from emp;

DSC00035.png

3、MAX 函数:求最大值
select max(sal) from emp;

DSC00036.png

4、MIN 函数:求最小值
select min(sal) from emp;

DSC00037.png

5、COUNT 函数:统计数据(count()括号里面可以是*也可以是字段名)
select count(*) from emp;

DSC00038.png

select count(deptno) from emp where deptno=10;

DSC00039.png





分组函数经常与分组语句连用
select deptno,sum(sal) from emp group by deptno;

DSC00040.png


三、分析函数
row_number:得到连续的数字
rank:相同的值排位相同,随后跳跃
dense_rank:相同的值排位相同,随后接着往后排
select empno,ename,sal,row_number() over(order by sal) from emp;

DSC00041.png

select empno,ename,sal,rank() over(order by sal desc) from emp;

DSC00042.png

select empno,ename,sal,dense_rank() over(order by sal desc)from emp;

DSC00043.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256848-1-1.html 上篇帖子: oracle 修改锁定账户的处理 下篇帖子: oracle支持的SQL操作符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表