Oracle common analytic functions using finishing

Oracle has built a number of functions, different functions have different functions and uses, some functions can only act on a recorded line, and some can act on multiple rows, different functions can handle different data types . There are two types of common, one-way functions and group functions, the following will explain the differences one by one and use.

Please enter the first two articles began to learn another ORACLE base table access commonly used statement consolidation and Oracle query statements and the use of finishing

A character function

Character input parameter function is character type , the return value is character type or digital type

Character functions: case-control function, the control function character

Case-control functions: UPPER, LOWER, the INTCAP  return values are character types, change the case

UPPER(CHAR):该函数主要用于将字符串转化为大写格式
LOWER(CHAR):该函数用于将字符串转化为小写格式
INITCAP(CHAR):该函数用于将字符串中的每个单词的首字母大写,其余字符为小写
举例说明:将EMP表中JOB的字段转化为大写显示
SELECT * FROM EMP WHERE JOB=UPPER('SALESMAN'); 由于EMP表中为大写所以敲一下熟悉一下就好
等价于:SELECT * FROM EMP WHERE UPPER(JOB)='SALESMAN'; 
举例说明:将EMP表中JOB的字段转化为小写显示
SELECT * FROM EMP WHERE JOB=LOWER('CLERK'); 
等价于SELECT * FROM EMP WHERE LOWER(JOB)='CLERK'; 
举例说明:将EMP表中首字符转化为大写其余为小写显示
SELECT EMPNO,INITCAP(ENAME) FROM EMP ;
输出结果:
1	7369	Smith 
2	7499	A_Llen
--总结:可以写成函数名(表字段)=‘值’也可以写成表字段=函数名(‘值’)

Character control function: CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD, the TRIM, ERPLACE 

DUAL 虚拟的表
CONCAT(STR1,STR2):该函数用于字符串的连接
举例说明:SELECT CONCAT('HELLO','ORACLE') FROM DUAL; 输出结果为:HELLOORACLE

SUBSTR(CHAR,M[,N]):该函数用于截断字符串,char指定表字段名,m用于指定从哪个位置开始截取,n用于指定截取长度,如果m为0,则从首字符开始
举例说明:分别截取1,3;0,3,-1,1
SELECT SUBSTR('HELLO',1,3) FROM DUAL; 结果:HEL
SELECT SUBSTR('HELLO',0,3) FROM DUAL; 结果:HEL
SELECT SUBSTR('HELLO',-1,1) FROM DUAL; 结果:O

LENGTH(char):该函数用于返回字符串的长度,字符串中我的后缀空格也记作字符串的长度
举例说明:统计Oracle这个字符串的长度
SELECT LENGTH('Oracle') FROM DUAL; 结果:7

INSTR(CHAR,CHAR2[,N[,M]]):该函数用于取得子串在字符串中的位置,Char1用于指定源字符串,char2用于指定子串,n用于指定起始搜索位置(默认值:1),M用于指定子串的第m次出现的次数(默认值:1)
举例说明:输出HELLO Oracle中Oracle的出现位置在哪
SELECT INSTR('HELLOE Oracle','Oracle') FROM DUAL;结果:7 
举例说明:输出HELLO Oracle HELLO Oracle 中第二个Oracle的出现位置在哪
SELECT INSTR('HELLOE Oracle HELLO Oracle','Oracle',1,2) FROM DUAL;结果:20

LPAD(CHAR1,N,CHAR2):该函数用于在字符串的左端填充字符,CHAR1用于指定源字符串,CHAR2用于指定被填充的字符,N用于指定填充的CHAR1总长度
举例说明:在HELLO左侧填充5个#
SELECT IPAD('HELLO',10,'#') FROM DUAL; 结果:#####HELLO

RPAD(CHAR1,N,CHAR2):该函数用于在字符串有段填充字符,CHAR1用于指定源字符串,CHAR2用于指定被填充的字符,N用于指定填充后的CHAR1的总长度
举例说明:在HELLO右侧填充3个#
SELECT RPAD('HELLO',8,'#') FROM DUAL;结果:HELLO###

REPLACE(CHAR,SEARCH_STRING[,REPLACEMENT_STRING]):该函数用于铁环与指定被替换字段,REPLACEMENT_STRING用于指定替换子串
举例说明:
SELECT REPLACE('HELLO WORD',WORD,'ORACLE') FROM DUAL;结果:HELLO ORACLE

Second, the value function

Input parameter values and function return values are numeric

Common numerical functions: the ROUND (), TRUNC (), the MOD ()

Rounding ROUND

四舍五入:ROUND(N[,M]) 该函数用于返回四舍五入的结果,其中N可以使任意数字,M必须是整数
举例说明:
ROUND(25.328) 结果:25 四舍五入整数位
ROUND(25.328,2) 结果:25.33 四舍五入到小数点第2位
ROUND(25.328,-1) 结果:30 四舍五入到小数点前的第1位

Capture digital TRUNC

截取数字:TRUNC(N,[M])该函数用于截取数字,其中N可以是任意数字,M必须是正数
举例说明:
TRUNC(25.328) 结果:25
TRUNC(25.328,2) 结果:25.32
TRUNC(25.328,-1) 结果:20

Modulo MOD

求模(求余数):MOD(M,N)
该函数主要用于取得来个数字相除后的余数,如果数字N为0则返回结果为M
举例说明:
MOD(25,6) 结果:1
MOD(25,0) 结果:25

Three examples illustrate

实例说明:求员工的日工资
SELECT ROUND(MGR/30),TRUNC(MGR/30) FROM EMP;
SELECT ROUND(MGR/30,2),TRUNC(MGR/30,2)FROM EMP;
SELECT ROUND(MGR/30,-1),TRUNC(MGR/30,-1)FROM EMP;

Third, the date function

Date functions: functions for date time type

Commonly used date functions: SYSDATE , MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND, TRUNC

System date SYSDATE : This function returns the current system date

举例说明:关键字SYSDTATE 今天
SELECT SYSDATE FROM DUAL;
SELECT SYSDATE-1 AS 昨天,SYSDATE AS 今天, SYSDATE+1 AS 明天 FROM DUAL; 
输出结果:1	2019/9/15 18:16:58	2019/9/16 18:16:58	2019/9/17 18:16:58

Two months by a difference of MONTHS_BETWEEN (D1, D2)  D1 indicates the current

举例说明:计算员工入职多长时间
SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP;
SELECT ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)) FROM EMP;
SELECT ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) FROM EMP;

ADD_MONTHS

ADD_MONTHS(D,N):该函数应用于返回特定日期时间之后或之前的月份对应的日期时间,D用于指定日期时间,N可以是任意整数
举例说明:查询出每位员工入职30年后的日期
SELECT ENAME,ADD_MONTHS(HIREDATE,30*12)FROM EMP

Returns NEXT_DAY

NEXT_DAY(D,CHAR):该函数用于返回特定日期之后的第一个工作日所对应的日期,D用于指定日期值,CHAR用于指定工作日
举例说明:查询下周一的日期
SELECT SYSDATE,NEXT_DAY(SYSSDATE,'星期一') FROM DUAL;

Return specific date LAST_DAY

LAST_DAY(D):该函数用于返回特定日期所在月份的最后一天
举例说明:查询出当前日期的月份最后一天
SELECT SYSDATE,LAST_DAY(SYSDATE) FROM DUAL;

Datetime rounding ROUND

ROUND(D[,FMT]):该函数用于返回日期时间的四舍五入的结果
D用于指定日期的时间值,FMT用于指定四舍五入的方式
举例说明:获取当前时间为2019-09-15
SELECT ROUND(SYSDATE,'YEAR') FROM DUAL; 结果:2020/1/1
SELECT ROUND(SYSDATE,'MONTH')FROM DUAL; 结果:2019/9/1

Cut-off date function TRUNC

TRUNC(D,[,FMT]):该函数用于截断日期时间数据
D用于指定日期的时间值,FMT用于指定截断日期时间数据的方法
举例说明:
SELECT TRUNC(SYSDATE,'YEAR') FROM DUAL;
SELECT TRUNC(SYSDATE,'MONTH') FROM DUAL;

Fourth, the transfer function

Convert numeric type to a character type TO_CHAR

TO_CHAR(N[,FMT]):将数值类型转换为字符类型
N用于指定数值,FMT用于指定数字格式的模型
格式模型常用元素如下:
9:显示数字,并且会忽略前导0
0:显示数字,并且位数不足时用0补齐
.:在指定位置显示小数点
,:在指定位置显示逗号
$:在数字签名加美元符号
L:在数字前加本地货币符号,也就是默认的$
--举例说明:日期转换为字符获得当前年
select to_char(sysdate, 'yyyy') from dual;
--获得当前年月日
SELECT TO_CHAR(HIREDATE, 'YYYYMMDD') FROM  EMP;
SELECT TO_CHAR(HIREDATE, 'YYYY"年"MM"月"DD"日"') FROM  EMP;
SELECT TO_CHAR(HIREDATE, 'YYYY-MM-DD') FROM  EMP;
--返回在星期, 星期日为1,星期一为2,星期二为3.........星期六为7
select to_char(sysdate, 'D') from dual;
举例说明:格式化价格样式
select to_char('11112222', 'L999,999,999') from dual; --¥11,112,222

Converting the character type to date type TO_DATE

TO_DATE(CHAR[,FMT[,'NLSPARAMS']]):该函数用于将字符串转换为日期类型的数据
CHAR用于匹配日期数据的字符串,FMT用于指定日期格式模型,‘NLSPARAMS’用于指定日期语言
举例说明:查看1982年嘿嘿入职的员工信息
SELECT ENAME,HIREDATE FROM EMP WHERE HIREDATE>TO_DATE('1981-12-31','YYYY-MM-DD');
--转化成日期
select to_date('2017-06-19', 'YYYYMMdd') from dual; 

Converting the digital value type TO_NUMBER

TO_NUMBER(N[,FMT]):该函数可以将包含数字的字符串转换成数值类型
N是包含数字的字符串,FMT用于指定数字格式模型
举例说明:显示工资大于7000的所有源的姓名和工资
SELECT ENAME,MGR FROM EMP WHERE MGR>TO_NUMBER('¥7000','L99999');

Fifth, the generic function

NVL handling null values

NVL(EXPR1,EXPR2):该函数用于处理NULL
如果EXPR1是NULL则返回EXPR2,反之则返回EXPR1
举例说明:
SELECT ENAME,SAL,COMM,SAL+NVL(COMM,0) FROM EMP;

NVL2(EXPR1,EXPR2,EXPR3):与NVL一致都是处理NULL的
不同的是如果EXPR1不是空值,则返回2如果为NULL则返回EXPR3

举例说明:
SELECT ENAME,SAL,COMM,NVL2(COMM,SAL+COMM,SAL) FROM EMP;

NVLIF(EXPR1,EXPR2):该函数用于比较表达式,如果二者相等则返回NULL,否则返回EXPR1
举例说明:查询所有源的入职日期,并把本月初入职的员工月其他员工进行区分
SELECT EMPNO,ENAME,HIREDATE,NULLIF(HIREDATE,TRUNC(SYSDATE,'MONTH')) FROM EMP;

COALESCE(EXPR1[,EXPR2][,...]):该函数用于返回表达式列表中第一个NOT NULL表达式的结果
举例说明:SELECT ENAME,SAL,COMM,COALESCE(SAL+COMM,SAL)FROM EMP;

 

Published 35 original articles · won praise 16 · views 190 000 +

Guess you like

Origin blog.csdn.net/qq_38795430/article/details/97612616