3、单行函数

本文深入讲解了SQL中的单行函数,包括字符函数如大小写转换、字符串处理;数字函数如round、trunc;以及日期函数的使用方法。通过实例演示了如何在查询中应用这些函数进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三、单行函数

两种类型函数:
单行函数:single-row-functions  每行返回一个结果
多行函数:multiple-row-functions  每个行组集返回一个结果

单行函数:
1、使用函数为了操作数据
2、将输入的变量处理,每行返回一个结果
3、可以转换数据类型,可以嵌套使用
4、传入的变量可以是列值,也可以是表达式

字符函数:
大小写类型:case-conversion-functions
lower 大写变成小写
upper 小写变成大写
initcap 将首字母大写,其他字母小写
SQL> select ename,sal,job from emp where ename=upper('smith');
SQL> select ename,sal,job from emp where lower(ename)='smith';
建议使用第一种,因为第二种是对表内所有的名字变成小写之后与smith比较,如果表中条目很多的话会影响数据库运行
一般在等号的右边使用函数

字符处理类型:character-manipulation-functions
concat 拼接
concat ('hellow','world') 
helloworld

substr 截取
substr('helloword',1,5) 
hellow

length 求字符长度
length('helloworld')
10

instr 查看字符是第几个
instr('helloworld','w')
6

lpad | rpad 在左边用字符补充成为X个字符 | 在右边用字符补充成为X个字符
lpad(sal,10,'*')
******1000
rpad(sal,10,'*')
1000******

replace 将字符替换
replace ('jack and jue' ,'j','bl')
black and blue

trim 去除字符
trim('h' from  'helloworld')
elloworld 
trim(' ' from ' helloworld   ')  去空格
helloworld

数字函数:number functions
round  按照指定小数四舍五入
SQL> select round(  ,  ) from dual;
括号前半部分表示要四舍五入的数字
括号后半部分表示位数,以小数点为界限,
-2代表小数点前二位以后都四舍五入
2代表小数点后数两位,之后的数字四舍五入
0或者不输入代表小数后四舍五入

trunc  按照指定小数截断数据
SQL> select trunc (  ,  ) from dual;
括号前表示要截取的数字
括号后表示截取的位数,以小数点为界限,
-2代表小数点前二位以后都都删去
2代表小数点后数两位,之后的数字删去
0或者不输入表示小数点以后的数字都删除

mod  两数相除取余数
两数相除取余数
SQL> select mod (2,0) from dual;
  MOD(2,0)
----------
     2
SQL> select mod (0,0) from dual;
  MOD(0,0)
----------
     0
SQL> select mod (2) from dual;
select mod (2) from dual
       *
ERROR at line 1:
ORA-00909: invalid number of arguments

0可以被mod取余数时除,但是不可以被除以

SQL> select 1/0 from dual;
select 1/0 from dual
        *
ERROR at line 1:
ORA-01476: divisor is equal to zero

日期:working with dates
Oracle数据库默认显示日期格式:世纪,年,月,日,时,分秒
默认显示: DD-MON-RR
默认显示年的最后2个数字

日期算术运算:arithmetic with dates
1、现有日期加上或者减去一个数值,可以得到一个新的日期
2、两个日期相减,得到两个日期间的天数
3、除以24,可以得到小时数
select ename,(sysdate-hiredate)/7 as weaks from emp
where deptno=10;
查看出10部门所有人分别工作了多少周

日期函数处理:
months_between ('01-sep-19,'11-jan-18')  两个日期之间相差多少月
add_mounth ('30-jan-96',1)   日期加一个月
next_day ('01-sep-95','friday')  下一个周五
last_day ('01-feb-95')  这个月的最后一天

舍入与截断
round (sysdate,'mounth')   按月份四舍五入
round(sysdate,'year')   按年份四舍五入
trunc(sysdate,'month')  按月份截取
trunc(sysdate,'year')   按年份截取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值