oracle函数

聚合函数,分组函数
必须配合group by使用,如果只返回一个字段(使用了聚合函数),可以不需要group by
SUN():求和
AVG():求平均值
MAX():最大值
MIN():最小值

字符函数
concat:连接函数,select concat(‘我是’,‘你爸爸’) from dual,只能连接两个字符串
|| :连接字符串,同上,可以连接多个
length:返回字符串长度,select lenght(‘我是你爸爸’) from dual
replace:替换函数,select replace(‘我是你爸爸’,‘爷爷’) from dual
ltrim:去除最左边对应的字符串,select ltrim(‘我是你爸爸’,‘我’) from dual
rtim:去除最右边的字符串

数组函数
abs():绝对值,select abs(-0.321) from dual
round*():四舍五入截取数字,select round(561.156,2) from dual 注意:第二个参数为正表示小数点右多少位。为负表示向左多少位,0代表四舍五入取整数
round还可以适用于日期,例如少于半年,当年的1月1号,大约半年,则为下一年1月1号
trunc():截取数字,select trunc(16515.156165,3) from dual,不四舍五入
还可以截取时间
select trunc(sysdate,‘year’) from dual; --截取到年(本年的第一天)
select trunc(sysdate,‘q’) from dual; --截取到季度(本季度的第一天)
select trunc(sysdate,‘month’) from dual; --截取到月(本月的第一天)
select trunc(sysdate) from dual; --默认截取到天
也可以截取时分毫秒(注意:没有截取秒的方法)

日期函数
add_months(sysdate,1):加1月,select sysdate,add_months(sysdate,1) from dual
add_months(sysdate,12):加1年,select sysdatw,add_months(syadate,12) from dual
sysdate+1:加1天,select sysdate,sysdate+1 from dual 或 select sysdate,to_char(sysdate+1,‘yyyy-MM-dd HH24:mi:ss’) from dual
sysdate+7:加1周,select sysdate,sysdate+7 from dual
sysdate+1/24:加1小时,select sysdate,sysdate+1/24 from dual
sysdate+1/(2460):加1分钟,select sysdate,sysdate+1/(2460) from dual
sysdate+1/(246060):加1秒,select sysdate,sysdate+1/(246060) from dual
last_day:当月的最后一天,select sysydate,last_day(sysdate) from dual
extract:提取当前日期的特定部分。
select sysdate,extract(YEAR from sysdate) from dual 提取年份
select sysdate,extract(MONTH from sysdate) from dual 提取月份
select sysdate,extract(DAY from sysdate) from dual 提取天
select sysdate,extract(HOUR from SYSTIMESTAMP) from dual 提取小时用SYSTIMESTAMP,但是SYSTIMESTAMP不是当前时区,比国内时间晚8小时
select sysdate,extract(MINUTE from SYSTIMESTAMP) from dual 提取分钟
select sysdate,extract(SECOND from SYSTIMESTAMP) from dual 提取秒
或者使用
select to_char(sysdate,‘HH24’) from dual 提取小时
select to_char(sysdate,‘mi’) from dual 提取分钟
select to_char(sysdate,‘ss’) from dual 提取秒

简单Case函数
Case搜索函数 :生成一个新的字段,字段的值由其他的字段决定
CASE WHEN sex = ‘1’ THEN ‘男’ WHEN name= ‘张三’ THEN ‘李四’ ELSE ‘其他’ END AS TT

表连接
INNER JOIN 表明 ON 关联条件:内连接,两边都有
LEFT JOIN 表明 ON 关联条件:左连接,左边为准,左边有,右边没有为null
RIGHT JOIN 表明 ON 关联条件:右连接,右边为准,右边有,左边没有为null
FULL JOIN 表明 ON 关联条件:全连接,两边全部展示,匹配不到一起的为null

WITH 表名 AS(sql语句)
使用WITH AS 语句可以为一个子查询语句块定义一个名称,使用这个子查询名称可以在查询语句的很多地方引用这个子查询。Oracle 数据库像对待内联视图或临时表一样对待被引用的子查询名称,从而起到一定的优化作用。

常用函数
NVL(n1,n2):判断是否为空,n1和n2的类型需要一致,n1位int类型话,n2也只能是int;n1是char,n2才可以为‘ ’
NVL2(x,n1,n2):增强判断是否为空,x不为空则值为n1,为空则为n2
to_char():转换成字符串类型,如果数字转成字符串,0.28会变成.28,需要用to_char(‘0.28’,‘fm99999990.00’),占位符,9代表有数字展示数字,0代表没有数字,0的话用0替代。
to_number():转换成number类型
GROUP BY:分组,返回的select中必须包含分组条件,额外的条件必须使用分组函数

SUBSTR()
格式1: substr(string string, int a, int b)
格式2:substr(string string, int a)
select substr(‘HelloWorld’,0,3) value from dual; //返回结果:Hel,截取从“H”开始3个字符
select substr(‘HelloWorld’,1,3) value from dual; //返回结果:Hel,截取从“H”开始3个字符
select substr(‘HelloWorld’,0,100) value from dual; //返回结果:HelloWorld,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
select substr(‘Hello World’,5,3) value from dual; //返回结果:o W (中间的空格也算一个字符串,结果是:o空格W)
select substr(‘HelloWorld’,-1,3) value from dual; //返回结果:d (从后面倒数第一位开始往后取1个字符,而不是3个。原因:下面红色 第三个注解)
select substr(‘HelloWorld’,-2,3) value from dual; //返回结果:ld (从后面倒数第二位开始往后取2个字符,而不是3个。原因:下面红色 第三个注解)

INSTR()
格式一:instr( string1, string2 ) instr(源字符串, 目标字符串)
格式二:instr( string1, string2 , index, number ) instr(源字符串, 目标字符串, 起始位置, 第几次出现)
select instr(‘helloworld’,‘l’) from dual; --返回结果:3 默认第一次出现“l”的位置
select instr(‘helloworld’,‘lo’) from dual; --返回结果:4 即:在“lo”中,“l”开始出现的位置
select instr(‘helloworld’,‘l’,2,2) from dual; --返回结果:4 也就是说:在"helloworld"的第2(e)号位置开始,查找第二次出现的“l”的位置
select instr(‘helloworld’,‘l’,4,2) from dual; --返回结果:9 也就是说:在"helloworld"的第4(l)号位置开始,查找第二次出现的“l”的位置
select instr(‘helloworld’,‘l’,-1,1) from dual; --返回结果:9 也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第一次出现的“l”的位置
select instr(‘helloworld’,‘l’,-2,2) from dual; --返回结果:4 也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第二次出现的“l”的位置
select instr(‘helloworld’,‘l’,2,3) from dual; --返回结果:9 也就是说:在"helloworld"的第2(e)号位置开始,查找第三次出现的“l”的位置
select instr(‘helloworld’,‘l’,-2,3) from dual; --返回结果:3 也就是说:在"helloworld"的倒数第2(l)号位置开始,往回查找第三次出现的“l”的位置

你可能感兴趣的:(MyBatis,Oracle)