oracle学习笔记大全.pdf
1、decode 函数:
SELECT checkup_type, DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
FROM checkup;
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 函数
的实参支持值。
2、nvl 函数的用法:
如果你某个字段为空,但是你想让这个字段显示0nvl(字段名,0) ,就是当你选出来的时候,
这个字段虽然为空,但是显示的是0 ,当然这个0 也可以换成其他东西,如:1,2,3……
NULL 指的是空值,或者非法值。
NVL (expr1, expr2)->expr1 为NULL,返回expr2 ;不为NULL,返回expr1 。注意两者的类型要
一致
NVL2 (expr1, expr2, expr3) ->expr1 不为NULL,返回expr2;为NULL,返回expr3 。expr2 和expr3
类型不同的话,expr3 会转换为expr2 的类型
NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1
3、oracle 的查询必须是 select ... from ...成对出现:
查询单行的时候可以用dual 代替,dual 表在系统中只有一行;
例如:获取系统时间;
select sysdate from dual
4、oracle 查询结果多行用逗号拼接:
SELECT WM_CONCAT(GOODSTYPENAME) FROM TB_SYS_PRODUCT_FORBIDGOODSTYPE fib
LEFT JOIN TB_SYS_GOODSTYPE ty ON fib.goodstypeid=ty.goodstypeid
WHERE fib.productid=t.productid
5、oracle 递归获取所有子或者父节点:
pid 为子级的父级id 的字段名称
从Root 往树末梢递归:获取子级
整理不易,如果文档对您有帮助,请您下载使用,谢谢
select * from temp
start with id=3 /*父级的id*/
connect by prior id = pid /*pid 子级的父级id 的字段名称*/
从末梢往树ROOT 递归:获取父级
select * from temp
start with id=3
connect by id = prior pid /*pid 子级的父级id 的字段名称*/
如果需要显示层次结构
select sys_connect_by_path(id,'/'),pid from temp
start with id=1
connect by prior id = pid
Rg:
SELECT * from tb_base_netpoint t
START WITH t.netpointid=74852
CONNECT BY PRIOR t.netpointid=t.parentnetpoint
6、oracle 使用正则表达式:
替换掉大写字母:
SELECT REGEXP_REPLACE(printNo,'^[A-Z]*','') AS ISSUENO FROM TB_BASE_PRINTORDERLIST
Oracle 10g 支持正则表达式的四个新函数分