名站网址导航为大家提供关于数据库教程相关的教程网站知识。
oracle中的decode的使用介绍
含义解释:,decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值),该函数的含义如下: IF 条件=值1 ThEN RETURN(翻译值1) ELSIF 条件=值2 ThEN RETURN(翻译值2) ...... ELSIF 条件=值n Th,decode(字段或字段的运算,值1,值2,值3), 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3 当然值1,值2,值3也可以是表达式,这个函数使得某些sql数据库语句简单了许多,使用具体相关方法:,1、比较大小,select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值 sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 例如: 变量1=,2、此函数用在SQL数据库语句中,功能介绍如下:,Decode函数与一系列嵌套的 IF-ThEN-ELSE数据库语句相似。base_exp与compare1,compare2等等依次进行比较。假如如果base_exp和 第i 个compare项匹配,就返回第i,Decode函数在实际开发中非常的有用,结合Lpad函数,如何使主键的值自动加1并在前面补0 select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号) 1)),14,'0') 记录编号 f,eg:,select decode(dir,1,0,1) from a1_interval,dir 的值是1变为0,是0则变为1,比如我要查询某班男生和女生的数量分别是多少?,通常咱们这么写:,select count(*) from 表 where 性别 = 男; select count(*) from 表 where 性别 = 女;,要想显示到一起还要union一下,太麻烦了,用decode呢,只需要一句话,select decode(性别,男,1,0),decode(性别,女,1,0) from 表,3,order by对字符列进行特定的排序,大家还可以在Order by中使用Decode。,例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。,select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)
EXISTS
该函数返回
Collection.EXISTS(index)
COUNT
该函数集合
Collection.COUNT
DELETE
该过程从嵌套表中删除一个或多个或合部元素
Table_name.DELETE 删除所有元素
Table_name.delete(index)删除指定索引的记录
Table_name.delete(start_index,end_index)删除区间内元素
FIRST
返回集合第一个元素索引,假如如果集合为空,返回NULL
Collection.FIRST
LAST
返回集合中最后一个元素索引,假如如果集合为空,返回NULL
Collection. LAST
NEXT
返回集合当前元素的下一个元素的索引,假如如果它不存在就返回NULL
Collection. NEXT
PRIOR
返回集合当前元素的上一个元素的索引,假如如果它不存在就返回NULL
Collection. PRIOR
LIMIT
返回varray中创建元素的最大个数
Collection. LIMIT
EXTENDS
该过程在集合的末尾添加新的元素
Collection.EXTEND添加一个NULL元素;Collection.extends(n)添加N个NULL元素,Collection.extend(n,index)添加由index指定位置上元素的n个副表
TRIM
从集合末尾处删除元素
Collection.TRIM 删除最后一个元素
Collection.TRIM(n)删除最后N个元素
数据加中的集合
与index-by表不同,varray和嵌套表可以作为对象-关系表中的珍存储在网站数据库中。它们也可以作为对象关系表中的列使用。为了表示出作为网站数据库列的数据类型,集合类型必须是在pl/sql和 sql中可见。这需要使用create or replace type 数据库语句定义而不能仅在pl/sql块中进行局部定义。语法如下:
create of replace type table_name is table of data_type
------from to me
I.表类型
--索引组织表,存放在内存中的表.
DECLARE
TYPE t_indexTable IS TABLE OF emp%ROWTYPE NOT NULL INDEX BY BINARY_INTEGER;
v_indexTable t_indexTable;
CURSOR v_cur IS
SELECT * FROM emp;
BEGIN
FOR c IN v_cur LOOP
v_indexTable(c.empno):=c;
IF v_indexTable.EXISTS(c.empno) ThEN
DBMS_OUTPUT.PUT_LINE('v_indexTable('||c.empno||').empno=' || c.empno
||';v_indexTable('||c.empno||').ename='||c.ename);
ELSE
DBMS_OUTPUT.PUT_LINE('v_indexTable('||c.empno||'):不存在');
END IF;
END LOOP;
END;
注:INDEX BY BINARY_INTEGER表示索引表,否则为嵌套表.表类型的下标不一定是连续的,所以可以删除某个下标值,数组类型不行.
关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。