【oracle】单行函数

SELECT *

FROM EMP

WHERE ENAME=UPPER('smith');   --将小写转换为大写,LOWER将大写转换为小写

 

SELECT ENAME 原始姓名,REPLACE(ENAME,'A','_')FROM EMP;   --将ENAME中的A替换成_

SELECT *

FROM EMP

WHERE LENGTH(ENAME)=5;   --姓名长度为5的显示

 

SELECT *

FROM EMP

WHERE SUBSTR(ENAME,1,3)='JAM';    --截取ENAME前三个为JAM的内容显示

 

SELECT ENAME 原始姓名,SUBSTR(ENAME,3)   --截取从第三个开始往后的字母

FROM EMP

WHERE DEPTNO=10;  

 

SELECT ENAME 原始姓名,SUBSTR(ENAME,-3)   --截取后三个字母

FROM EMP

WHERE DEPTNO=10;

 

SELECT CHR(65),ASCII('L')   --实现字符与ASCII码的转换

FROM DUAL;

 

SELECT '   MLDN  LICONGCONG    '原始字符串,LTRIM('    MLDN LICONGCONG    ')去掉左空格

FROM DUAL;

 

SELECT '   MLDN  LICONGCONG    '原始字符串,RTRIM('    MLDN LICONGCONG    ')去掉右空格

FROM DUAL;

 

SELECT '   MLDN  LICONGCONG    '原始字符串,TRIM('    MLDN LICONGCONG    ')去掉左右空格

FROM DUAL;

 

SELECT LPAD('MLDN',10,'*')LPAD函数使用   --将MLDN左边添加6个'*'

FROM DUAL;

 

SELECT RPAD('MLDN',10,'*')LPAD函数使用   --将MLDN右边添加6个'*'

FROM DUAL;

 

SELECT

 INSTR('MLDN java','MLDN') 查找得到,

 INSTR('MLDN java','java') 查找得到,

 INSTR('MLDN java','JAVA') 未查找到

FROM DUAL;


SELECT

 ROUND(789.452)不保留小数,

 ROUND(789.452,2)保留2位小数,       --ROUND进行四舍五入

 ROUND(749.452,-2)处理整数进位

FROM DUAL;

 

SELECT EMPNO,ENAME,SAL*12年工资,ROUND(SAL/30,2)平均日工资

FROM EMP;

 

SELECT

 TRUNC(789.452)去掉小数,

 TRUNC(789.452,2)截取2位小数,     --TRUNC不进行四舍五入

 TRUNC(749.452,-1)截取整数

FROM DUAL;

 

SELECT MOD(10,3)

FROM DUAL;

 

SELECT SYSDATE FROM DUAL;   --获取年月日

 

ALTER SESSION SETNLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';   --通过这样设置,可以具体到秒

 

SELECT

 SYSDATE+3三天之后的日期,   --日期+数字=日期

 SYSDATE-3三天以前的日期    --日期-数字=日期

FROM DUAL;

 

SELECT EMPNO 雇员编号,ENAME雇员姓名,TRUNC(SYSDATE-HIREDATE) 雇佣天数   --日期-日期=数字

FROM EMP;

 

SELECT SYSDATE,

 ADD_MONTHS(SYSDATE,3) 三个月之后的日期,

 ADD_MONTHS(SYSDATE,-3) 三个月之前的日期

FROM DUAL;

 

SELECT SYSDATE,

 NEXT_DAY(SYSDATE,'星期二') 下一个星期二,

 NEXT_DAY(SYSDATE,'星期日') 下一个星期日    --求下一个指定日期

FROM DUAL;

 

SELECT SYSDATE,LAST_DAY(SYSDATE)  --查询当前日期所在月的最后一天

FROM DUAL;

 

SELECT

 EMPNO 雇员编号,ENAME 雇员姓名,HIREDATE雇用日期,

 TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)) 雇佣总月数,

 TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) 雇佣总年数

FROM EMP;

 

SELECT SYSDATE 当前系统时间,

 TO_CHAR(SYSDATE,'YYYY-MM-DD') 格式化日期,                    --格式化函数

 TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') 格式化日期时间,

  TO_CHAR(SYSDATE,'FMYYYY-MM-DDHH24:MI:SS') 去掉前导0      --FM去掉前导0

FROM DUAL;

 

SELECT *

FROM EMP

WHERE TO_CHAR(HIREDATE,'MM')='02';

 

SELECT EMPNO,ENAME,

 TO_CHAR(HIREDATE,'YYYY') 年,

 TO_CHAR(HIREDATE,'MM') 月,

 TO_CHAR(HIREDATE,'DD') 日

FROM EMP;

 

SELECT

  TO_NUMBER('19')+TO_NUMBER('09') 加法操作,   --将字符串转换为数字

 TO_NUMBER('19')*TO_NUMBER('09') 乘法操作

FROM DUAL;

 

SELECT

 '19'+'09' 加法操作,    --oracle支持自动转换

 '19'*'09' 乘法操作

FROM DUAL;

 

SELECT NVL(NULL,0),NVL(3,0) --如果为NULL,就变为0,否则还是原来的

FROM DUAL;

 

SELECT EMPNO,ENAME,JOB,HIREDATE,(SAL+NVL(COMM,0))*12年工资

FROM EMP;

 

SELECTEMPNO,ENAME,JOB,HIREDATE,NVL2(COMM,SAL+COMM,SAL)*12 年工资      --如果COMM为NULL则返回SAL,否则就返回SAL BUL+COMM

FROM EMP;

 

 

SELECT NULLIF(1,1),NULLIF(3,4)   --相等则返回空,不等则返回左边的数

FROM DUAL;

 

SELECT

 DECODE(2,1,'内容为1',2,'内容为2',3,'内容为3','没有满足条件') 判断1,  --类似if...else if...else

 DECODE(3,1,'内容为1',2,'内容为2',3,'内容为3','没有满足条件') 判断2,

 DECODE(5,1,'内容为1',2,'内容为2',3,'内容为3','没有满足条件') 判断3

FROM DUAL;

 

SELECT ENAME,SAL,

 DECODE(JOB,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁') JOB         --必须都要判断

FROM EMP;

 

SELECT ENAME,SAL,

 CASE JOB WHEN 'CLERK' THEN SAL*1.1

          WHEN 'SALESMAN' THEN SAL*1.2

          WHEN 'MANAGER' THEN SAL*1.3

 ELSE

           SAL*1.5

  END新工资

FROM EMP;

 

SELECT ENAME,COMM,

 COALESCE(COMM,100,1000),COALESCE(COMM,NULL,NULL)  --COALESCE(表达式1,表达式2,表达式3,,...表达式N)若表达式1为空

FROM EMP;                                            --则执行表达式2,若表达式2为空,则执行表达式3,若都为空,则显示NULL

SELECT COUNT(*) FROM EMP;   --统计有多少记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值