SQL Sever 2008和Oracle 10g sql语句的区别:递归、拼音排序
2012-07-06 15:25
393 查看
1、递归查询
Orcale 10g:
select level, m.pid,m.nodename,m.nodemark nodemark,m.parentid,m.nodeurl,m.classname
from (select distinct m.pid pid,m.nodename nodename,m.nodemark nodemark,m.parentid parentid,m.nodeurl nodeurl,
m.classname classname,ordernum from bs_t_sm_menutree m, bs_t_sm_rolemenutree rm where m.pid = rm.menuid
and m.status = 1 and rm.roleid in = ?) m start with parentid = '0' connect by parentid = prior pid order siblings by m.ordernum
SQL Server 2008: with myTb as(select pid,nodename,nodemark,parentid,nodeurl,classname,ordernum, cast(right(100000 + ordernum,5) as varchar(1000)) as dns, 1 as level from BS_V_SM_MENUBYROLE m where m.roleid in =? and m.parentid = '0' union all select b.pid,b.nodename,b.nodemark,b.parentid,b.nodeurl,b.classname,b.ordernum, cast(myTb.dns+'-'+cast(right(100000+b.ordernum,5) as varchar(5)) as varchar(1000)) as dns, level+1 as level from myTb inner join BS_V_SM_MENUBYROLE b on myTb.pid=b.parentid and b.roleid in = ?) select distinct * from myTb t order by t.dns
2、排序:
1、按照汉字的拼音排序:
Oracle 10g: select * from bs_t_sm_user t order by nlssort(t.fullname, 'NLS_SORT=SCHINESE_PINYIN_M');
SQL Server 2008: select * from bs_t_sm_user t order by t.fullname COLLATE Chinese_PRC_CS_AS_KS_WS
Orcale 10g:
select level, m.pid,m.nodename,m.nodemark nodemark,m.parentid,m.nodeurl,m.classname
from (select distinct m.pid pid,m.nodename nodename,m.nodemark nodemark,m.parentid parentid,m.nodeurl nodeurl,
m.classname classname,ordernum from bs_t_sm_menutree m, bs_t_sm_rolemenutree rm where m.pid = rm.menuid
and m.status = 1 and rm.roleid in = ?) m start with parentid = '0' connect by parentid = prior pid order siblings by m.ordernum
SQL Server 2008: with myTb as(select pid,nodename,nodemark,parentid,nodeurl,classname,ordernum, cast(right(100000 + ordernum,5) as varchar(1000)) as dns, 1 as level from BS_V_SM_MENUBYROLE m where m.roleid in =? and m.parentid = '0' union all select b.pid,b.nodename,b.nodemark,b.parentid,b.nodeurl,b.classname,b.ordernum, cast(myTb.dns+'-'+cast(right(100000+b.ordernum,5) as varchar(5)) as varchar(1000)) as dns, level+1 as level from myTb inner join BS_V_SM_MENUBYROLE b on myTb.pid=b.parentid and b.roleid in = ?) select distinct * from myTb t order by t.dns
2、排序:
1、按照汉字的拼音排序:
Oracle 10g: select * from bs_t_sm_user t order by nlssort(t.fullname, 'NLS_SORT=SCHINESE_PINYIN_M');
SQL Server 2008: select * from bs_t_sm_user t order by t.fullname COLLATE Chinese_PRC_CS_AS_KS_WS
相关文章推荐
- sql语句按照汉字拼音首字母排序
- 转载:ORACLE和SQL SERVER的SQL语句中的一些区别
- ORACLE和SQL SERVER的SQL语句中的一些区别
- oracle中用rownum分页并排序的查询SQL语句
- db2 数字转换字符 oracle和db2的sql语句区别
- oracle中使用SQL递归语句
- 多音字按拼音首字母排序sql语句的问题解决方案
- myeclipse连接oracle 10g出错:递归sql级别 1 出现错误
- oracle心得1--oracle简介@基本sql语句@条件查询@排序数据理论与案例
- ORACLE中用rownum分页并排序的SQL语句
- oracle中使用SQL递归语句(转)
- Oracle使用SQL语句进行递归查询
- sql语句按照汉字拼音首字母排序
- Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解
- ORACLE中用rownum分页并排序的SQL语句
- Oracle经典sql语句总结@sql-plus重点函数串讲与sql语句案例@中文排序详讲).doc
- Oracle和Mysql中Sql语句中的一些函数用法区别
- Oracle SQL语句 on和where having的区别
- Oracle经典sql语句总结@sql-plus重点函数串讲与sql语句案例@中文排序详讲).doc
- ORACLE中用rownum分页并排序的SQL语句