·新学习·新旅程 / NEW TERM
Oracle 学习笔记_4_ 单行函数
分类
# 字符函数
# 数字函数
# 日期函数
# 转换函数
# 其他函数
字符函数
# 包含 lower、upper、initcap、length、concat、substr、instr、rpad、lpad、trim、replace
LOWER
# lower 转换为小写
-- 查询学生,将学生姓名全部转换为小写
select lower (name) from stu;
UPPER
# upper 转化为大写
-- 查询学生,将学生姓名转化为大写
select upper (name) from stu;
INITCAP
# initcap 首字母大写,其他字母转换成小写
-- 查询学生,将学生姓名开头为大写其余为小写
select initcap (name) from stu;
LENGTH
# length 获取字符串长度
-- 查询学生姓名长度
select length (name) from stu;
CONCAT
# 连接两个字符串
-- 将学生姓名与年龄合并成一个输出
select concat (name,age) from stu;
SUBSTR
# substr 指定在某个字段从几取到几
-- 查询学生姓名的前两个字是什么
select substr(name,1,5) from stu;
INSTR
# instr 在字段中查找指定的字符,并返回所在的位置
-- 查询学生名字中含有‘t’的在第几位
select instr(name,'t') from stu;
RPAD
# rpad 在右侧填充指定字符直到填充长度截止自己写的长度为止
-- 在学生姓名右侧填充@,长度为10
select rpad(name,10,'@') from stu;
LPAD
# lpad 在左侧填充指定字符直到填充长度截止自己写的长度为止
-- 在学生姓名左侧填充#,长度为10
select lpad(name,10,'@') from stu;
TRIM
# 去首尾空格,不会去除中间的空格
-- 查询学生年龄为20的学生信息
select * from stu where age = trim('20 ');
REPLACE
# replace 将相同字符串替换为新的字符串
-- 将学生姓名中的't'换为'mm'
select replace(name,'t','mm') from stu;
数字函数
# 包含 round trunc mod
ROUND
# round 四舍五入,取小数位
-- 四舍五入45.623987小数后三位
select round(45.623987,3) from dual;
结果:45.624
TRUNC
# trunc 截取指定小数位
-- 截取46.5892小数后两位
select trunc(46.5892,2) from dual;
结果:46.58
MOD
# mod 取余
-- 求6/3的余
select mod(6,4) from dual;
结果:2
日期函数
# 包含 months_between、add_months、next_day、last_day、round(另一种用法) trunc
MONTHS_BETWEEN
# months_between(c1,c2) 两个日期差多长时间
ADD_MONTHS
# add_months(c1,c2) 一个日期加减月得到新日期
NEXT_DAY
# next_day 取从当前日期开始遇到的第一个指定星期几的日期
LAST_DAY
# last_day 计算指定日期所在月份的最后一天日期
ROUND(D1,C1)
# round 按年或月四舍五入后取的新日期
C1对应表
最近0点 | 空 或 j |
最近星期日 | day/dy/d |
最近月 | month/mon/mm/rm |
最近季 | q |
最近年初 | syear/year/yyyy/yyy/yy/y |
最近世纪初 | cc/scc |
TRUNC
# trunc 取的按年或月截取的新日期
转换函数
# ● 隐含的类型转换
● 显式的类型转换
建议用显式转换,确保可靠性
转换方式
数值型
to_char() ↓↑ number()
字符型
to_date() ↓↑ to_char()
日期型
其他函数
# 包含 nvl nullif case decode
NUL
# nul 将null转化为空格
语法“nul(C1,C2)
如果C1为null,转化为C2
C1:字段 C2:转化的值
# nul2 可以返回自定值
语法:nul2(C,C1,C2)
如果C不为null返回C1,为null返回C2
C:任意类型字段 C1:不为null返回值
C2:为null返回值
NULLIF
# nullif(C1,C2) 比较两个表达式,相同返回空,不相等返回C1
CASE
# case...when...then...when...then...else...end
类似 if...else,当字段 如果怎样 返回什么 如果怎样 返回什么 否则怎样
-- 如果job为MANAGERG薪水上涨 10%,如果job为SALESMAN工资上涨 50%
select empno, ename, job, sal, (case job when 'MANAGER' then sal*1.1 when 'SALESMAN' thensal*1.5 end) as newsal from emp;
DECODE
# decode 类似case...wen...then..end
decode(字段,内容1,输出1,内容2,输出2...)
简单的单行函数查询
2021/9/19




