Oracle总结二

Posted 唐微港

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle总结二相关的知识,希望对你有一定的参考价值。

Oracle的强大之处之一,就在于有较多的函数方便进行数据分析操作,Oracle中函数分成了两个大类,一类是单行函数,另一类是多行函数,而每一类函数下面又分为了较为多类型的函数。

单行函数

(注释:输入一个参数,输出一个结果)

字符串函数:

对字符串操作

演示实列操作结果
CONCAT(‘Hello’, ‘World’)HelloWorld
SUBSTR(‘HelloWorld’,1,5)Hello
LENGTH(‘HelloWorld’)10
INSTR(‘HelloWorld’, ‘W’)6
LPAD(10000,10,’*’)*****24000
RPAD(10000, 10, ‘*’)24000*****
TRIM(‘a’ FROM ‘aHelloWorld’); 去除首个字符elloWorld
TRIM(’ HelloWorld’)HelloWorld
TRIM(‘Hello World’)Hello World

数字函数:

对数字进行计算,返回一个数字

演示实列操作结果
round(2.666) – round () 四舍五入3
trunc(2.666,1); – trunc() 截取小数点后位置2.6
mod(3,10); – mod() 模运算符(求余)3

日期函数:

对日期和时间进行处理

演示实列操作结果
MONTHS_BETWEEN(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’),TO_DATE(‘2021-04-10’,‘yyyy-mm-dd’))1.16129032
ADD_MONTHS(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’),2)2021/7/15
NEXT_DAY(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’),‘FRIDAY’)2021/5/21
NEXT_DAY(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’),1)2021/5/16
LAST_DAY(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’))2021/5/31
ROUND(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’),‘MONTH’)2021/5/1
ROUND(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’),‘YEAR’)2021/1/1
TRUNC(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’), ‘MONTH’)2021/5/1
TRUNC(TO_DATE(‘2021-05-15’,‘yyyy-mm-dd’),‘YEAR’)2021/1/1

转换函数:

可以将一种数据类型转换为另外一种数据类型

  • 大小写,首字母转换
演示实列操作结果
LOWER(‘SQL Course’)sql course
UPPER(‘SQL Course’)SQL COURSE
INITCAP(‘SQL course’)Sql Course
  • TO_CHAR(date, ‘format_model’) ;函数:日期到字符串的转换,format_model的可选参数如下
日期格式化****元素意义
YYYY4位数字表示的年份
YEAR英文描述的年份
MM2位数字表示的月份
MONTH英文描述的月份
MON三个字母的英文描述月份简称
DD2位数字表示的日期
DAY英文描述的星期几
DY三个字母的英文描述的星期几简称
HH24:MI:SS AM时分秒的格式化
DDspth英文描述的月中第几天
fm格式化关键字,可选

例句:

SELECT last_name, TO_CHAR(hire_date, 'fmDD "of"	Month YYYY') AS  HIREDATE
FROM employees;
  • TO_CHAR(number, ‘format_model’) ; 函数:数字到字符串的转换
  • TO_NUMBER();函数:字符串到数字的转换
  • TO_DATE(char[, ‘format_model’]);函数:字符串到日期的转换
数字格式化****元素意义
9表示一个数字
0强制显示0
$放一个美元占位符
L使用浮点本地币种符号
.显示一个小数点占位符
,显示一个千分位占位符

例句:

SELECT TO_CHAR(salary, 'L99,999.00') SALARY FROM employees
WHERE last_name = 'Ernst';

例句:

select TO_NUMBER('4456') from dual;
select TO_NUMBER('$4,456','$9,999' )from dual;
select TO_NUMBER('$4,456,455.000','$9,999,999,999,999.999' )from dual;

例句:

select to_date ('22-FEB-11') from dual;
select to_date('2011-2-22','YYYY-MM-DD') from dual;
select to_date('2-22-2011','MM-DD-YYYY') from dual;
select to_date('2011-FEB-22','YYYY-MON-DD') from dual;

其他函数

演示实例操作结果
NVL (expr1, expr2)如果expr1为空,这返回expr2
NVL2 (expr1, expr2, expr3)如果expr1为空,这返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2)如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, …, exprn)如果expr1不为空,则返回expr1,结束;否则计算expr2,直到找到 一个不为NULL的值 或者如果全部为NULL,也只能返回NULL 了

例子:

SELECT last_name, salary, NVL(commission_pct, 0),  (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL  FROM employees;

多行函数

(输入多个参数,或者是内部扫描多次,输出一个结果)

数量 count

 count(0)--用来查询表中有多少条记录
 count(字段名),--查询指定字段的数量
 count(distinct 字段名),--可以先去除重在计算某个字段的值。

总和 sum

sum(sal) --获取某个字段的总和

平均值 avg

avg(字段) --获取某个字段的平均值

最大最小值 max/min

max(字段) --查询最大值
min(字段) --查询最小值

以上是关于Oracle总结二的主要内容,如果未能解决你的问题,请参考以下文章

Oracle再怼Amazon,我们做的是二代云!

为什么二代测序的原始数据中会出现Read重复现象?

二代身份证号码编码规则

二代测序技术总结

染色体基因芯片分析和第二代测序应用的区别

老忽悠Larry Ellison的Oracle二代云:纸老虎还是洪水猛兽