Oracle 中常见函数在teradata中如何实现
下面看看Oracle 和 Teradata 几个常见函数对比:
1、oracle:nvl(f1,f2...),teradata:coalesce(f1,f2...)
2、oracle:decode(AA,v1,r1,v2,r2),
teradata:
case
when AA=v1 then r1
when AA=v2 then r2
else null
end
3、类型转化:oracle,to_char(),to_date()
teradata,cast('' as 类型)
4、Length() 函数不是Teradata 的标准函数,虽然Teradata SQL Assitant支持它,但是BTEQ不支持,td中计算VARCHAR型数据字段的实际字符串长度的函数是CHARACTERS,可以写为成CHARACTER、CHARS或CHAR, char_length 等。
5、a:trunc(to_date('20090323','YYYYMMDD'),'month') ->2009-03-01
td没有此函数,使用脚本里处理好的变量$g_this_month,其它常用日期同,定义见 ebi_agg_ep_cust_txn_sum0200.pl;
b:trunc(23.22,1) ->23.2
trunc(23.22) ->23
ROUND((200392/ 10000),2)->20.04
cast(23.22 as decimal(6,1))) ->23.2
cast(23.22 as int) ->23
cast(200392/10000.00 as decimal(10,2)) ->20.04
6、add_months(dt1,int) TD有此函数,但运算结果与oracle有所不同:
oracle中月末增减月份数得到的都是月末,td中则不一定
eg. select add_months(cast('20090430' as date format 'YYYYMMDD'),-1)
--2009-03-30 td
select add_months(to_date('20090430','YYYYMMDD'),-1) from dual
--2009-03-31 oracle