oracle sql developer

时间:2016-02-17 09:53:11

标签: sql oracle oracle11g oracle10g

任何人都可以向我解释一下oracle数据库中的分层查询。特别是关于术语

  1. 开始
  2. Connect By
  3. 没有循环
  4. 之前。
  5. NULLIF
  6. 此外,为什么在与普通查询进行比较时使用它。我也给出了一个示例查询,在此查询的帮助下解释我,因为它对所有人都有用。

    SELECT SID
    FROM student
      CONNECT BY NOCYCLE PARENT_sid = PRIOR SID
      START WITH sid                = prior NULLIF(parent_sid,sid)
    

1 个答案:

答案 0 :(得分:1)

来自Hierarchical Queries的文档:

  • START WITH 指定层次结构的根行。

  • CONNECT BY 指定层次结构的父行和子行之间的关系。

  • NOCYCLE 参数指示Oracle数据库从查询中返回行,即使数据中存在CONNECT BY循环也是如此。

  • PRIOR 运算符 - 在分层查询中,必须使用PRIOR运算符限定条件中的一个表达式以引用父行。

来自NULLIF上的Oracle文档:

  

NULLIF比较expr1和expr2。如果它们相等,那么功能   返回null。如果它们不相等,则函数返回expr1。   您不能为expr1指定文字NULL。

     

如果两个参数都是数值数据类型,那么Oracle数据库   隐式地确定具有更高数字优先级的参数   将另一个参数转换为该数据类型,并返回该参数   数据类型。如果参数不是数字,那么它们必须是   相同的数据类型,或Oracle返回错误。

NULLIF函数在逻辑上等效于以下CASE表达式:

CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END