Oracle [常用函数]

函数

1.sysdate

当前的日期包含时间
select sysdate from dual;

2.length(str)函数:

返回字符串的长度,str表示一个字符串
select length('aa') from dual;
--select * from a where length(name)=6;

3.concat(str1,str2)

str1,str2都是字符串,将字符串str1和str2拼接在一起
select concat('aa','bb') from dual;

||:它是字符串连接符
select 'aa'||'bb' from dual;
注意:字符串要用单引号括起来,在字符串中使用两个连着的单引号
	这时第一个单引号是一个转义符号

4.chr(ASCCII)

将ASCCII码转换成字符
select chr(39) from dual;

5.substr(str,index,len)

字符串截取函数
--str是一个字符串,
--index截取的开始位置,
--len截取的长度(可省略)
select substr('abcdefg',2,2) from dual; #bc

6.trim([s from ]str)

--str表示字符串
--s表示字符,表示去除字符串两端的空格,如果加s,表示去除字符串两端的字符s

select trim('   abcd    ') from dual;
select trim('$' from '$abcd$$') from dual;

ltrim(str[,'s']):去除字符串左边的空格或者字符s
--select ltrim('    abcd    ') from dual;
rtrim(str[,'s']):去除字符串右边的空格或者字符--sselect rtrim('$abcd$','$') from dual;

7.replace(str,s,d)

替换函数 
表示将字符中str中的s替换成d
--str字符串
--s要替换的内容,d替换成内容
select replace('abcd1qewr1qerazdf','qe','QE') from dual;

8.lpad/rpad(str,len[,s])

表示在字符串的左边右边填充空格或者s让字符串的长度到len的长度
--str表示字符串
--len表示扩展后的整个字符串长度
--s:表示要扩展的内容,可选参数
select lpad('abcd',2,'6') from dual;
select rpad('abcd',2,'6') from dual;

9.initcap(str)

str表示字符串,将字符串中的英文单词首字母大写
select initcap('helloworld') from dual;--H
select initcap('hello world') from dual;--H W

10.lower/upper(str)

将字符串全部转换成小写/大写
select lower(name) from a;
select upper(name) from a;

11.instr(str,s[,n1,n2])

在字符串中找某个字符的位置
在字符串str中从n1的位置开始查询第n2次出现字符s的位置
--str字符串
--s:要查询的字符,
--n1表示从位置开始查询,n2表示这个字符第几次出现
select instr('asdoqwerjldajsfoqjwelfjaoidsfj','j',10) from dual;
--从字符串的第10个字符开始查找第一次出现j的位置

12.floor(n)

取整函数,只取整数部分,不进行四舍五入
select floor(3.41) from dual;

13.mod(m,n)

求m除以n的余数的函数
select mod(3,2) from dual;

14.round(n,s)

四舍五入函数,n表示数字,s表示精度,默认是0
select round(3.134,1) from dual;

15.power(m,n)

求m的n次方
select power(2,8) from dual;

16.to_number(str[,format])

将字符串转换成数字
--str字符串
--format格式字符串
select to_number('78.1234') from dual;

17.to_date(str,format)

将字符串转换成固定格式的日期
--str是一个日期
--format:日期格式
yyyy:表示4位的年
MM:表示两位月
dd:表示两位的天
hh24:表示24小时制的小时
mi:表示分钟
ss:表示秒
day:表示星期

select to_date('1999-09-09 14:24:34','yyyy-MM-dd hh24:mi:ss') from dual;

18.to_char(date,format)

将日期转换成字符串
--date是一个日期
--format:日期格式
select to_char(sysdate,'yyyy') from dual;

19.add_months(date,n)

给日期加减n个月
select add_months(sysdate,3) from dual; --给日期加几个月
select add_months(sysdate,-2) from dual; --减n个月

20.months_between(date1,date2)

求两个日期相差多少个月
select months_between(sysdate,to_date('20210120','yyyyMMdd')) from dual;

21.last_day(date)

取日期当前月的最后一天
select last_day(sysdate) from dual;

22.trunc():截断函数

select trunc(3.13453,3) from dual; 
--截断数字类型,第二个参数表示精度,不会四舍五入
select trunc(sysdate,'yyyy') from dual; 
--截取到年(本年的第一天)

23.decode(exp,res1,value1,res2,value2,…,default)

--exp 表达式的
--res1,res2 ,..:表达式的结果
如果表达式结果和某一个res值相等,就会返回res后面对应的value
如果表达式的结果没有一个res值和它匹配,它会返回default默认值
--select decode(ssex,'男','男生','女','女生','未知') from student;

24.nvl(变量,默认值)

如果变量的值是空时,函数返回默认值
如果变量的值不为空返回变量的值
select nvl(comm,200) from a;

25.行列转换

1.行转列
将表中多行数据转成一行的多个字段输出。
/*
select username,
sum(case when subject='语文' then score else 0 end) 语文, 
sum(case when subject='英语' then score else 0 end) 英语, 
sum(case when subject='数学' then score else 0 end) 数学
from student group by username;
*/
pivot:行转列的函数
pivot(聚合函数(填进去的值) for (表头) in (表头对应的值))
select * from student pivot (sum(score) for subject in ('语','数','英'));

2.列转行
将表中多个列,每个列拉成一行数据。
unpivot:列转行函数
select * from studentScores2 
unpivot(score --为列转行中多列变成一列的值取别名
              for subject  --在结果中成为一列的原多列取统一别名 
  in('语','数','英'));```

number(l,s) 数字类型

l 长度
s 精度(小数)

varchar2(l) 字符串类型

date 日期

timestamp 秒后面9
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值