SQL函数学习
SQL函数学习
[TOC]
函数
函数都有返回值–有几个数据返回几个值(分组函数除外)
函数都带括号
函数类型:
数值型函数
字符型函数
日期型函数
分组函数(聚合函数) 一组数据返回一个值
数值型函数
1.取绝对值 abs(数值)
不论正数负数,返还的值都是正数,0返还0,空值返还空值
1 | select abs(123) from dual;--返回123 |
2.判断正负值 sign(数值)
正数返回1,负数返回-1,0返还0,空值返还空值
1 | select sign(123) from dual;--返回1 |
3.取整 ceil(数值)——向上取整 floor(数值)——向下取整
向上取整:只要小数点后面有值,不论大小都进一
向下取整:舍弃小数点后的内容
1 | select ceil(123.156) from dual;--返回124 |
4.求余数(取余) mod(x,y) –x被除数 y除数
x / y = 商……余数–要的就是这个余数
–余数种类跟除数大小一致
1 | select mod(10,3) from dual; |
5.四舍五入 round(数值,精度) –精度为精确程度
按照精度对数值进行四舍五入
1 | select round(123.156) from dual; |
6.截断函数 trunc(数值,精度)
按照精度对数值进行截断操作(舍弃精度后的值)
1 | select trunc(123.156) from dual; |
7.round / trunc 对日期的操作
1 | select sysdate from dual; |
1 | 查询员工的姓名与薪资,以员工XX的薪资是XX的形式输出 |
转换函数
一. oracle中的数据类型
1 | 字符型(字符串) |
二. to_char()
函数–转成字符型
1.数值转字符
1 | to_char(数值)--无指定格式转换 |
2.日期转字符
1 | sysdate --系统时间,精确到秒 |
3.10进制转16进制–X
1 | select to_char(123456,'xxxxx') from dual; |
三. to_number
–转为数值型
1 | 1.字符型转数值型--特点居右对其,开头不带0 |
四. to_date –转为日期型
1 | select to_date('2022-05-06','yyyy-mm-dd') from dual; |
字符串函数
1.字符串跟 ascii 之间的转换
1 | chr() --数值转ASCII |
2.连接符函数 concat(值1,值2) –连接符函数一次只能连接两个值
1 | select ename||'的薪资为:'||sal from emp; |
3.大小写转换函数
1 | upper()--小写转大写 |
–替换函数可以进行位数不对等的替换
–替换函数可以把符合条件的内容全部替换
–第三个参数不写可以用作删除
1 | select replace('ABCDEF','C','Z') from dual; |
5.去除函数
运行原理:先去除第一个字符,第一个字符不满足时去除第二个字符,依次循环,直到全部字符不满足条件为止。
–满足条件的部分全部去除
–要被去除的字符如果省略,默认去除空格
1 | trim(要被去除的内容 from 字符串)--去除两边的字符 |
6.截取函数 substr(字符串,开始位置,截取长度)
–固定从左往右截取,长度不足时输出全部
–截取长度不能小于1,不能为负数(不会报错,输出空值)
1 | select substr('ABCDEFGHRJK',1,4) from dual; |
7.填充函数 pad –填充时,一个汉字算作两个长度
lpad(字符串,填充后的总长度,填充内容)
rpad(字符串,填充后的总长度,填充内容)
1 | select lpad('ABCD',10,'Q'),rpad('ABCD',10,'Q') from dual; |
8.测量长度
1 | length(字符串)--测量字符串长度 |
9.查找位置 instr(字符串,要查找的字符,从第几个字符开始查找,在字符串中出现的次数)
1 | select instr('ABCDFGAADD','D',4,1) from dual;--4 |
日期型函数
1 | sysdate |
1.months_between(日期1,日期2) 求两个日期相差几个月
1 | select months_between(sysdate,hiredate) from emp; |
2.last_day() 本月的最后一天
1 | select last_day(sysdate) from dual; |
3.add_months(日期,n) –在日期的基础上增加 N个月
1 | select add_months(sysdate,3) from dual; |
4.next_day(日期,’星期日~六’) 下一个周几–不是下一个周的周几
–在计算机中,周日为每周的第一天
1 | select next_day(to_date('2022-5-11','yyyy-mm-dd'),'星期三') from dual;--5月18 |
case when
注意点:
- 一个case when 语句-始于case ,终于 end,整个语句相当于一个字段
- 相当于给表加入了一个没有的列
- 输出值格式要保持一致
- 输出值可以进行加减,连接符之类的操作
- case when 语句 的输出值数据类型必须保持一致
1 | case when 条件 then 输出值 |
聚组函数
特点:
- 不能与其他字段连用(除非有分组语句)
- count(1) 和 count(*)效果相同
- 空值不参与统计
- 每个分组返还一个值
注意点:
聚组函数不能放在where后面
MAX()最大值
1 | select max(sal) from emp; |
MIN()最小值
1 | select min(sal) from emp; |
SUM()求和
1 | select sum(sal) from emp; |
AVG()平均值
1 | select avg(sal) from emp; |
COUNT(字段)计数
1 | select count(sal) from emp; |
COUNT(*或1)计数
1 | select count(*) from emp; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BestDream!