数据库篇-oracle函数,数据库篇-oracle函数
时间:2023-09-12 11:13:53 整理: • 3人看过
1.round
示例:
选择round(23.4),round(23.45,1),
员工的 轮(23.45,-1);
结果:23 23.5 20
2.trunc 取整精度函数从dual中选择trunc(12.35)
结果:12
3.ceil/floor 取整函数示例:
从emp中选择ceil(23.45),floor(23.45);
结果:24
4.计算函数(1) abs取绝对值。
示例:
从emp中选择abs(23.45),abs(-23),ABS(0);
成绩:23.45 23
(2) mod(m,n)取余数。
select mod(5,2) from emp result: 1
从emp中选择mod(5,null)结果是空。
(3) power(m,n)得出m的n次幂。
从emp中选择power(2,3);
(4) sqrt:求平方根
从emp结果4中选择sqrt(16)
5.聚合函数(1)和函数
从stuinfo a中选择sum(a . salary);
(2)计数统计功能
select count(*)from stu info a;
(3)avg平均函数
从stuinfo a中选择avg(a . salary);
(4)max最大值函数
从stuinfo a中选择max(a . salary);
(5)最小最小值函数
从stuinfo a中选择min(a . salary);
6.字符函数(1)大写小写转换为大写
(2)将大写字母小写
(3) initcap大写。
(4) substr (char,[m[,n]])获取子串函数。
注:负号是从末尾开始倒数。
选择substr('abcde ',2,3),substr('abced ',2),
来自emp的 substr('abced ',-2,1);
结果:bcd bcde e
(5) length获取字符串的长度。
从emp中选择长度(' ABC ');
结果:3
(6) concat(char1,char2)字符串连接函数或||
concat(char1,char2)
select concat('ab ',' CD ')from EMP;
并从emp中选择' ab ' | | ' cd结果是一样的
(7) TRIM删除子串函数(c1中的c2)
这个函数的意思是从字符串c1中删除字符c2。
select trim(' abcde '中的' a ')from EMP;
结果:bcde
LTRIM(c1[,c2]):从c1中移除c2。
selct ltrim('ababaa ',' a ')from EMP;
Results: babaa导致删除第一个a。
rtrim(c1[,c2])从尾部移除字符;
selct rtrim('ababaa ',' a ')from EMP;
结果:abab
TRIM(c1):移除左侧空网格。
(8)替换函数(char,s _ string [,r _ string])
省略r_string,替换为空 grid。
例:用大写的A替换A。
select replace('abcde ',' A ',' A ')from EMP;
结果,如果Abcde不写‘A’,A就会被去掉;
替换ab:
select replace('abcde ',' ab ',' A ')from EMP;
结果Acde的意思是ab同时改变。
(9)指令查找函数
在一个字符串中找到另一个字符串。
select instr('sdsdddssd ',' ds ')from dual;
从第二个位置向上看,找出ds第二次出现的位置。
select instr('sdsdddssd ',' ds ',2,2 from dual;
7.日期函数:[/h (1) sysdate系统时间:
默认格式:DD-MON-RR
从emp中选择sysdate-返回当前时间。
(2)日期运算add_months(date,I)
i可以是任意整数。如果我是负数,相应减去几个月。
示例:从当前日期加上3个月或减去3个月。
select add_months(sysdate,3),
add_months(sysdate,-3)from EMP;
结果:2015年8月22日至2015年2月22日
(3)next _ day(date,char)是星期几?
下周一是什么时候?
select next_day(系统日期,'星期一')from emp
(4) last_day(date)返回该月的最后一天。
select last _ day(sys dat)from EMP;
(5)个月_在(日期1,日期2)之间
表示两个日期之间的月差。
Select months _ between(' 20-5-15 ',' 10-1-15 ')
来自emp
结果:4
(6)提取(日期时间中的日期)
返回当前日期的年份。
select extract(从雇用日期开始的年份),
提取(从雇用日期开始的月份),
从雇员中提取(从雇用日期开始的天数);
示例:
返回年份
select extract(从sysdate开始的年份)from emp
返回月份
select extract(sysdate的月份)from emp
返回天数
select extract(从sysdate开始的日期)from emp
获取小时数
选择提取(从时间戳开始的小时' 2015-10-1 17:25:13 ')
来自emp
8.转换函数(1)函数to_char用于将日期转换为字符
to_char(date[,fmt[,params]])
参数说明:date:要转换的日期。
fmt:转换的格式参数:日期语言
日期转换日期的功能如下
格式:YY YYYY年。
MM月.月球
第二天.天空
HH24 HH12 .时间
我想念你.分钟
示例:选择
to_char(sysdate,' YYYY-MM-DD HH24:MI:SS ')
来自emp
(2)字符转换为日期的to_date。
to_date和to_cahr的区别在于to _ date转换后的日期。
的格式与系统的格式相同。一般可以使用to_char。
选择您想要的格式,截止日期:2017年9月3日。
to_date(date[,fmt[,params]])
选择
至今(' 2015年5月22日',' YYY-月-日')
来自emp
根据系统设置,一般结果是相同的。
结果:2017年9月3日
例2:
查询2006年入职员工信息的日期为2006年1月16日。
从员工中选择*
where to_char(雇佣日期,'年/月/日')
在“2006/01/01”和“2007/01/01”之间;
从员工中选择*
像'%'这样的雇佣日期;
(3)将数字转换成字符的功能
to_char(编号[,fmt])
9:显示数字,忽略前面的0。
0:显示数字,如果位数不足,用0填充。
。或d:显示小数点。
,或者g:显示千位。
$:美元符号
S:正或负(正面和背面都可以)
示例:
select to_char(12345.678,' .999.999 ')
来自emp
结果:12,345.678美元
select to_char(12345.678,' S99.999.999 ')
来自emp签名:
结果:12345.678
(4)将字符转换为数字的功能
to_number(char,[,fmt])
示例:select to_number('00 ',' 99 ')
来自emp
结果:1000
9. 填充函数左填充lpad和右填充rpad
select lpad('abcd ',10,' *') left,
rpad('abcd ',10,' * ')右
from dual;
结果:
* * * * * * * ABCD ABCD * * * * * *
10. NVL通用函数(1) NVL
如果oracle的第一个参数是空,则显示第二个参数的值。
如果第一个参数的值不是空,则显示第一个参数。
的值。
例如:
SQL & gt;从dual中选择ename,NVL(comm,-1);
(2) NVL2函数
如果函数的第一个参数不是空,则显示第二个参数。
,如果第一个参数的值为空,则显示第三个参数。
的值。
SQL & gt;select ename,NVL2(comm,-1,1)
来自emp
(3) NULLIF函数
NULLIF(exp1,expr2)函数
用于在exp1和exp2相等时返回空(NULL)。
否则,返回第一个值。
11. Coalesce函数高斯函数类似于NVL函数。
它的好处是选择多。
格式如下:
Coalesce(表达式1,表达式2,表达式3…..exprn)
含义:
返回表达式中的第一个非[/k0/]表达式。
SELECT COALESCE(NULL,NULL,3,4,5)
来自dual
返回结果是:3。
如果所有自变量都为空,则合并
返回空值。
12.wm_concat:字段合并函数将列显示为行。
原始表名是:
a
b
c
d
转换后
select WM _ concat(name)from dual;
结果a、b、c、d、e
用“|”替换结果中的逗号
select replace(WM _ concat(name),',',' | ')
from dual;
13.over分析函数按部门“连续”求和
sum(sal) over(分区按deptno排序按ename);
按部门汇总
sum(sal) over(按deptno分区);
不要按部门连续求和。
sum(sal) over(按deptno,ename排序);
求所有员工不分部门的总和,效果相当于sum(sal)。
sum(sal) over()
下面列出了常用的分析函数:
row_number() over(分区依据...以...排序...)
rank()超过(分区依据...以...排序...)
dense_rank() over(分区依据...以...排序...)
count()超过(分区依据...以...排序...)
max()超过(分区依据...以...排序...)
分钟()以上(分区依据...以...排序...)
sum() over(分区依据...以...排序...)
avg() over(分区依据...以...排序...)
first_value() over(分区依据...以...排序...)
last_value() over(分区依据...以...排序...)
lag() over(分区依据...以...排序...)
lead() over(分区依据...以...排序...)
14.decode函数选择雇员id,
decode (sign (salary -17000),1,'优秀',0,'优秀',-1,
decode (sign(薪水-6000),1,'好',0,'好',-1,
decode (sign (salary-4200),1,'通过',0,'通过',-1,'失败'))
来自员工;
,