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

[经验分享] ORACLE SQL 行函数

[复制链接]

尚未签到

发表于 2018-9-9 12:59:47 | 显示全部楼层 |阅读模式
  第三章:单行函数
  字符串函数:
  select lower('Hello WOrld') from dual;
  select upper('Hello WOrld') from dual;
  select initcap('Hello WOrld') from dual;
  select concat('Hello','World') from dual;
  select length('HeloWorld') from dual;
  select instr('HelloWorld','o') from dual;
  select instr('HelloWorld','o',-1,2) from dual; --从右开始第二个“o”所在的位置
  select substr('HelloWorld',6) from dual;
  select substr('HelloWorld',6,2) from dual;
  select substr('HelloWorld',-5) from dual;
  select lpad(sal,10,'*') from emp;
  select rpad(sal,10,'*') from emp;
  select lpad(rpad('good',11,'*'),17,'*')from dual;
  select replace('he love you','he','I') from dual;
  select trim('H' from 'HelloWorld') from dual;
  select ltrim('HelloWorld','H') from dual;
  select rtrim('HelloWorld','d') from dual;
  select substr(name,instr(name,'/',-1)+1) from v$datafile;
  select ascii('刘') from dual;
  select chr(65) from dual;
  数字函数:
  select round(45.926,2) from dual;
  select round(45.926,0) from dual;
  select round(45.926) from dual;
  select round(45.926,-1) from dual;
  select trunc(45.926,2) from dual;
  select trunc(45.926,0) from dual;
  select trunc(45.926) from dual;
  select trunc(45.926,-1) from dual;
  select ceil(3.1415927) from dual; --进位取整
  select abs(100),abs(-100) from dual;
  select mod(13,4) from dual; --取余数
  select power(2,3) from dual; --2的3次幂
  取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
  select sign(123),sign(-100),sign(0) from dual;
  日期函数:
  select round(sysdate+10,'month') from dual;
  select round(add_months(sysdate,6),'year') from dual;
  select trunc(sysdate+10,'month') from dual;
  select trunc(sysdate,'year') from dual;
  select months_between('20-FEB-81','17-DEC-80') from dual;
  select add_months(sysdate,2) from dual;
  select next_day(sysdate,'SAT') from dual;
  select last_day(sysdate) from dual;
  转换函数:
  select to_char(sysdate,'yyyy-mm-dd') from dual;
  select to_char(sysdate,'fmyyyy-mm-dd') from dual;
  select to_char(sysdate,'year-month-day') from dual;
  select to_char(sysdate,'year-mon-dy') from dual;
  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
  select to_char(sysdate,'dd "of" mm') from dual;
  select to_char(10,'xx') from dual; --转换为16进制
  select to_char(sal,'l00,000.00') sal from emp;
  select to_char(sal,'l99,999.99') sal from emp;
  select to_char(sal,'l999.99') sal from emp;
  select to_number('$950.00','l999.99') from dual;
  select to_number('9c','xx') from dual; --转换为10进制
  select to_date('2000-05-01','yyyy-mm-dd') from dual;
  select
  to_char(sysdate,'yyyy') curr_year,
  to_char(to_date('05','yy'),'yyyy') yy05,
  to_char(to_date('95','yy'),'yyyy') yy95,
  to_char(to_date('05','rr'),'yyyy') rr05,
  to_char(to_date('95','rr'),'yyyy') rr95
  from dual;
  通用函数:
  nvl : expr1空则expr2,expr1不空则expr1;
  * nvl函数两个形式参数的数据类型要一致
  select ename,sal,comm,sal+nvl(comm,0) from emp;
  select ename,nvl(to_char(mgr),'No manager') from emp;
  nlv2 : expr1空则expr3,expr1不空则expr2
  select ename,nvl2(comm,sal+comm,sal) from emp;
  nullif : expr1=expr2返回空,expr1!=expr2返回expr1
  coalesce(exp1,exp2,exp3,.........) : 从左向右做枚举判断返回第一个非空表达式的值
  条件表达式:
  SELECT ename, job, sal,
  CASE job WHEN 'CLERK' THEN 1.10*sal
  WHEN 'SALESMAN' THEN 1.15*sal
  WHEN 'ANALYST' THEN 1.20*sal
  ELSE sal END "REVISED_SALARY"
  FROM emp;
  select ename, job, sal,
  decode (job,
  'CLERK',1.10*sal,
  'SALESMAN',1.15*sal,
  'ANALYST',1.20*sal,
  sal) "REVISED_SALARY"
  from emp;
  SELECT ename, job, sal,
  CASE WHEN job='CLERK' THEN 1.10*sal
  WHEN job='SALESMAN' THEN 1.15*sal
  WHEN job='ANALYST' THEN 1.20*sal
  WHEN ename='BLAKE' THEN SAL*1.1
  ELSE sal END "REVISED_SALARY"
  FROM emp;
  系统函数:
  查看当前用户:
  select user from dual;
  select SYS_CONTEXT('USERENV','SESSION_USER') from dual;
  查看系统时间:
  select sysdate from dual;
  查看客户端IP地址:
  SELECT sys_context('USERENV','IP_ADDRESS') FROM DUAL;
  查看主机名:
  SELECT sys_context('USERENV','HOST') FROM DUAL;
  查看当前方案:
  SELECT sys_context('USERENV','CURRENT_SCHEMA') FROM DUAL;
  查看当前的安全审核机制:
  SELECT sys_context('USERENV','AUTHENTICATION_TYPE') FROM DUAL;


运维网声明 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.iyunv.com/thread-569073-1-1.html 上篇帖子: ORACLE SQL WHERE和ORDER BY-7727197 下篇帖子: ORACLE SQL 多表连接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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