ORACLE SQL 单行函数

SQL函数有两种
1、 单行行数:字符函数、数值函数、日期函数、转换行数、通用行数
2、 多行行数
字符行数:
2.1大小写控制函数:LOWER、UPPER、INITCAP
2.2字符控制函数: CONCAT、SUBSTR、LENGTH、INSTR、LPAD | RPAD、TRIM、REPLACE
字符控制函数

函数结果意思
CONCAT(‘Hello’, ‘World’)HelloWorld字符“合并”
SUBSTR(‘HelloWorld’,1,5)Hello字符“截断”在第几个到几个
LENGTH(‘HelloWorld’)6找什么字母在第几个位置
INSTR(‘HelloWorld’, ‘W’)10字符的长度
LPAD(salary,10,’*’)*****24000左填充
RPAD(salary, 10, ‘*’)24000*****右填充
TRIM(‘H’ FROM’HelloWorld’)elloWorld去左右空格或左右字符
REPLACE(‘abcd’,’b’,’m’)Amcd字符替换

数字函数:

--四舍五入方法
select round(48.923,2)as"1四舍五入一位"
      ,round(48.923,0)as"2默认四舍五入"
      ,round(48.923,-1)as"3四舍五入"
from dual;
--截断
select trunc(48.923,2)as"1截断两位"
      ,trunc(48.923,0)as"2默认截断"
      ,trunc(48.923,-2)as"3截断"
from dual;
--求余
select last_name,salary,mod(salary,5000) as"求余"
from employees
where job_id = 'SA_REP';

日期函数
Oracle 中的日期型数据实际含有两个值: 日期和时间。
日期的数学运算
• 在日期上加上或减去一个数字结果仍为日期。
• 两个日期相减返回日期之间相差的天数。
– 日期不允许做加法运算,无意义
• 可以用数字除24来向日期中加上或减去天数。
如列提

--两个日期相差的月数(months_between)
select months_between('01-3月-19','01-1月-19')月数 from employees;
--向指定日期中加上若干月数(add_months)
select add_months('01-1月-19',6)from employees;
--指定日期的下一个星期几对应的日期(next_day)
select next_day('18-3月-19','星期一')from employees
--本月的最后一天(last_day)
select last_day('18-3月-19') from employees
--月份的四舍五入
select round(to_date('1987-09-17','yyyy-mm-dd'),'month')   from employees
--年份的四舍五入
select sysdate,round(sysdate,'year') from employees; 
--日期截断(trunc)
select sysdate,trunc(sysdate,'month')"月份截断"
       ,trunc(sysdate,'year')as "年份截断"
from employees;

显式数据类型转换
在这里插入图片描述将空值转换成一个已知的值:
• 可以使用的数据类型有日期、字符、数字。
• 函数的一般形式:
– NVL(commission_pct,0)
– NVL(hire_date,‘01-JAN-97’)
– NVL(job_id,‘No Job Yet’)

使用 NVL2 函数
NVL2 (expr1, expr2, expr3): expr1不为NULL,返回expr2;为NULL,返回expr3。

Select last_name,  salary, commission_pct,
       NVL2(commission_pct,'SAL+COMM', 'SAL') income
From employees 
Where department_id IN (50, 80);

CASE 表达式
下面是使用case表达式的一个例子:

Select last_name, job_id, salary,
    Casc job_id  when'IT_PROG'  then 1.10*salary
                   when 'ST_CLERK' then 1.15*salary
                   when 'SA_REP'   then1.20*salary
       else salary end"REVISED_SALARY"
from employees;

嵌套函数
• 单行函数可以嵌套。
• 嵌套函数的执行顺序是由内到外

    F3(F2(F1(col,arg1),arg2),arg3)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值