记录下oracle数据库转sqlserver数据库(二)

关于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,还会判断是否为‘‘字符。

记录下oracle数据库转sqlserver数据库(二)

 

 

 

isnull():仅仅只会判断是否为null。

记录下oracle数据库转sqlserver数据库(二)

 

 

 

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)

 

记录下oracle数据库转sqlserver数据库(二)

上一篇:SQL SERVER-修改TempDB路径


下一篇:FlinkSQL使用自定义UDTF函数行转列-IK分词器