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 支持正则表达式的四个新函数分