一个简单的递归语句,不同的写法有什么不同
来源:互联网 发布:bt文件下载软件 编辑:程序博客网 时间:2024/06/03 21:37
下面的写法有什么不同?
完整的原始数据如下:
select * from zzzzz;
第一种写法
select *
from zzzzz
start with id = '2'
connect by prior parentid like '%' || id || '%'
第二种写法
select *
from zzzzz
start with id = '2'
connect by prior instr(parentid, id) != 0
第三种写法
select *
from zzzzz
start with id = '2'
connect by prior instr(parentid, id) > 0
请问,后两种写法与第一种写法有什么不同?为什么结果不一样?
回答:关键在于,要搞清楚“于prior到底是什么?”,搞清楚这一点,就豁然开朗了。prior的意思是“上一条记录”,比如,第一种写法里面的prior parentid表示上一条记录的parentid,因此,第一种写法里面的connect by prior parentid like '%' || id || '%',表示的是上一条记录的parentid的内容,包含本条记录的id,所以第二种写法和第三种写法所犯的错误是一样的,就是prior的位置错了,应该放在parentid前面,如下所示:
改造后的第二种写法(注意prior现在的位置)
select *
from zzzzz
start with id = '2'
connect by instr(prior parentid, id) != 0
改造后的第三种写法(注意prior现在的位置)
select *
from zzzzz
start with id = '2'
connect by instr(prior parentid, id) > 0
- 一个简单的递归语句,不同的写法有什么不同
- xHTML与HTML的写法有什么不同?
- ibatis动态语句不同的写法
- 关于js函数的写法 fun = function(){} fun:{}有什么不同
- android的 launcher2 launcher 有什么不同
- listView中adapter有不同的click事件的简单写法
- if语句和switch有什么不同?
- 不同数据库的参数化SQL语句的写法
- PIC中断不同型号的不同写法
- new一个对象的时候,几种情况各有什么不同
- Rust: map中的问题,两种写法有什么不同?
- JS时间的不同写法
- matlab 高斯迭代的不同写法
- Unity委托的不同写法
- js getElementById的不同写法
- Python 的类的下划线命名有什么不同?
- Python 的类的下划线命名有什么不同?
- Python 的类的下划线命名有什么不同?
- 排序算法(二)
- 将httpd加入centos的系统服务
- 第十四周报告
- 位域
- 深入理解java多态性
- 一个简单的递归语句,不同的写法有什么不同
- 远程桌面按键失效变成快捷键
- 第15周报告1
- android源码编译的小小总结
- java多线程总结一:线程的两种创建方式及优劣比较
- win7下U盘安装Fedora14心得
- C# typeof() 和 GetType()区别
- 限制附件大小(lotus)
- iPhone应用程序编程指南