Oracle数据库之单行函数(一)字符、数字、日期、转换、通用、嵌套函数


在这里插入图片描述

单行函数

字符函数

大小写控制函数

函数结果
LOWER(‘SQL Server’)sql server
UPPER(‘SQL Server’)SQL SERVER
INITCAP(SQL Server)Sql Server

eg:

SELECT lower('XXX')  FROM dual;

output:

xxx

注:下面的函数都可通过虚表测试

字符控制函数

函数结果注释
CONCAT(‘Hello’,‘World’)HelloWorld连接字符串
SUBSTR(‘HelloWorld’,1,5)Hello截取字符串
LENGTH(‘HelloWorld’)10字符串长度
INSTR(‘HelloWorld’,‘W’)6

数字函数

函数结果注释
round(23.356,2)23.36四舍五入
trunc(45.356,2)45.92截断
mod(1600,300)100求余

日期函数

默认的日期格式是:DD-MON-RR day-month-year

函数结果注释
sysdate2019/9/9 15:01:46系统时间
months_between(‘22-JAN-2019’,‘2-FEB-2018’)11两个日期相差的月份
add_months(‘9-sep-2019’,3)2019/12/9指定日期添加月份显示日期
next_day(‘9-sep-2019’,‘FRI’)2019/9/13指定日期的下一个日期(通过星期确定)
last_day(‘9-sep-2019’)2019/9/30本月的最后一天
trunc(sysdate,‘month’)2019/9/1系统日期的截断(month条件下后面day为1,year条件后面month、day都为1,day条件正常)

数据类型转换函数

隐式数据类型转换

通过表达式计算可以得出:

原数据类型目标数据类型实现方式
VARCHAR2/CHARNUMBERselect '2'+2 from dual
VARCHAR2/CHARDATEselect '10-九月-2019'+1 from dual

显示数据类型转换

原数据类型目标数据类型实现方式结果
VARCHAR2/CHARNUMBERselect to_number('555')from dual555
VARCHAR2/CHARDATESELECT to_date('01/2/90','DD-MM-RR')FROM dual1990/2/1
NUMBERvarchar2/charSELECT to_char(2600.00,'999,999.99L')salary FROM dual2,600.00¥

嵌套函数

嵌套函数执行顺序是由里到外

通用函数

NVL函数

  • 使用:NVL( string1, replace_with)
  • 功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。
  • 实现:SELECT last_name,NVL( '', '222')name1 FROM employees
  • 在这里插入图片描述

NVL2函数

  • 使用:NVL2(expr1,expr2,expr3)
  • 功能:如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。
  • 实现:SELECT last_name,NVL2('2','aa','bb')name2 FROM employees
  • 结果:在这里插入图片描述

NULLIF函数

  • 形式:NULLIF(exp1,exp2)
  • 功能如果exp1=exp2,返回空值,如果exp1!=exp2,返回exp1
  • 例如:select nullif(1,2)from dual
  • 结果:1

COALESCE函数

  • 形式coalesce(exp1,exp2,…expn)
  • 功能:返回参数中第一个非空的参数
  • 例如:SELECT COALESCE(NULL,3,NULL,5)FROM dual
  • 结果:3

CASE…ELSE…END

  • 形式:
case...
	when ...then...
	when...then...
	.
	.
	.
	when...then...
else...
end 别名
  • 举例
select last_name,job_id,salary,
case job_id
	when 'IT_PROG' then 1.10*salary
	when 'SE_CLERK' then 1.15*salary
	when 'SA_REP' THEN 1.20*salary
else salary
end revised_salary
from employees
  • 结果
    在这里插入图片描述

decode函数

  • 形式
decode(表达式,
	值1,翻译值1,
	值2,翻译值2,
		.
		.
		.
	值n, 翻译值n,
	default值)别名
  • 举例
SELECT last_name, salary, 
       DECODE (TRUNC(salary/2000, 0), 
       0, 0.00, 
       1, 0.09,
       2, 0.20, 
       3, 0.30, 
       4, 0.40, 
       5, 0.42, 
       6, 0.44, 
       0.45) TAX_RATE
FROM   employees WHERE  department_id = 80;
  • 解释
if(表达式==值1)
return 翻译值1
if(表达式==值2)
return 翻译值2  
	.
	.
	.
default)别名
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值