关于oracle系统函数在sqlserver中如何实现:
1.获取自定义序列下一值
oracle:select sqe_XXX.nextval from dual
sqlserver:SELECT NEXT VALUE FOR sqe_XXX AS NEXTVAL FROM sys.sequences WHERE name = ‘sqe_XXX‘
2.oracle中nvl()与sqlserver中isnull
nvl():不仅会判断值是否为null,还会判断是否为‘‘字符。
isnull():仅仅只会判断是否为null。
3.oracle中decode() == sqlserver中case
decode() :例 decode(sex,1,‘男’,‘女‘)
case():例 case sex when 1 then ‘男’ else ‘女‘ end
注: decode(age,null,10,age) ------- 得写成case when age is null then 10 else age end,不能为case age when null then 10 else age end。
因为我写成when null时,并不能判断成功。
4.oracle中wm_concat()
wm_concat():合并列
例:
select wm_concat(项目名称) from
(
select
decode(zz.reportname,null,zz.ztitemname,zz.reportname) 项目名称
nvl(zz.combno,zz.ztitemid) 组合号 ,
zz.deptid
from hms_rep_ztitemsummary z,hms_reg_ztitem zz
where z.regid=‘999‘
and z.regid=zz.regid
and z.ztitemid=zz.ztitemid
) dd
group by dd.组合号,dd.deptid
sqlserver中我是如此实现:
select (select (zt.ztitemname)+‘,‘ from hms_reg_ztitem zt
where zt.deptid=dd.deptid
for xml path(‘‘)) 项目名称 from
(
select
case when zz.reportname is null then zz.ztitemname else zz.reportname end 项目名称,
case when zz.combno is null or zz.combno = ‘‘ then zz.ztitemid end 组合号,
zz.deptid
from hms_rep_ztitemsummary z
left join
hms_reg_ztitem zz on
z.regid=zz.regid
and z.ztitemid=zz.ztitemid
where z.regid=‘999‘
) dd
group by dd.组合号,dd.deptid
5.
to_char() 同 convert(varchar,1) or cast(1 as varcahr)
to_number() 同 convert(decimal,1) or cast(1 as decimal)
to_char(sysdate,‘yyyy-MM-dd HH:mi:ss‘) 同 convert(varchar,getdate(),120)
to_char(sysdate,‘yyyy-MM-dd) 同 convert(varchar,getdate(),23)