DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。
函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,
则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值.
其具体的语法格式如下:
DECODE(input_value,value,result[,value,result…][,default_result]);
其中:
input_value 试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果
value 是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result 是一组成序偶的结果值
default_result 未能与任何一序偶匹配成功时,函数返回的默认值
下面的例子说明了,如何读取用户CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的项目,作为DECODE函数的实参支持值。
SELECT checkup_type,
DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
FROM checkup;
--------------------------------------------------------------------------------------------------------------
nvl函数
NVL( string1, replace_with)
功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值
---------------------------------------------------------------------------------------------------------------
select * from dual dual是什么?
答:在Oracle数据库内有一种特殊的表Dual。Dual表是Oracle中的一个实际存在的表,任何用户均可读取,
常用在没有目标表的Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。
这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。
从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。
---------------------------------------------------------------------------------------------------------------
rpad函数从右边对字符串使用指定的字符进行填充
instr函数返回要截取的字符串在源字符串中的位置。
synonym 同义词。是表的同义词, 作用跟 查询里面的 为字段定义的别名差不多。
创建同义词:
create synonym emp for hr.employees; --默认属于donny用户,是donny的私有对象private
赋权限语句:grant ...on...
grant select, delete ,insert on apps.xxbgi_alert_rep_tmp to apps
---------------------------------------------------------------------------------------------------------------
oracle 中函数与存储过程的区别
1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有
2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.
函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等)