没有合适的资源?快使用搜索试试~ 我知道了~
HANA-SQL参考及Oracle对照-v0.6.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 75 浏览量
2021-12-18
14:31:07
上传
评论
收藏 284KB DOCX 举报
温馨提示
试读
19页
。。。
资源推荐
资源详情
资源评论
CASEHANA SQL 参考及 Oracle 对照
在本部分中,主要参考了《SAP_HANA 数据库 SQL 参考手册》,以及《ORACLE sql 参考
手册》,针对我们日常使用的 sql 方式、内置函数、关键字,进行了对比
1. 常用 SQL 写法
1.1. 递归查询
递归查询用于查询父子节点结构的数据表,形成树状结构的数据集,常用于菜单数据集、报
表结构数据
ORACLE
HANA
select * from
select * from
tf_rpt_hn_stat_bshzqk t
where t.dept_id='10262200'
start with t.dept_id='10000000'
connect by prior
"tf_rpt_hn_stat_bshzqk" t
where t.dept_id='10262200'
start with t.dept_id='10000000'
connect by prior
t.dept_id=t.dept_mng_id
order siblings by t.detp_id
对比说明:
t.dept_id=t.dept_mng_id
order by t.detp_id
Oracle 与 hana 的 start with…connect by prior 语句是一致的,条件语句也同样是先递归查询,
后 where 筛选
除了以上,HANA 中没有 level、siblings 关键字,无法像 oracle 有额外扩展功能
1.2. 竖转横查询
SQL 用法:
ORACLE
HANA
max(decode(t.zbdm,'FDCYXQK_0001', max(map(t.zbdm,'FDCYXQK_0001',t.zb
t.zbz,null)) A, z,null)) A,
max(decode(t.zbdm,'FDCYXQK_0002', max(map(t.zbdm,'FDCYXQK_0002',t.zb
t.zbz,null)) B, z,null)) B,
max(decode(t.zbdm,'FDCYXQK_0003', max(map(t.zbdm,'FDCYXQK_0003',t.zb
from tf_rpt_item_data_fdsc t
group
from "tf_rpt_item_data_fdsc" t
by
在 HANA 中,没有 decode 函数,与之功能相同的是 map 函数
1.3. nullif
ORACLE
HANA
select 100/nullif(0,0)
from dual t
对比说明:
select 100/nullif(0,0)
from DUMMY
在 ORACLE 与 HANA 中,nullif 功能相同,不同的是 HANA 没有 dual 表,只有 DUMMY 表
1.4. nvl(oracle),ifnull(hana)
SQL 用法:
当参数值为 null 时,返回指定的 value
ORACLE
HANA
select nvl(aaa,0)
from tab t
对比说明:
hana 中为 ifnull;oracle 中为 nvl
1.5. delete
SQL 用法:
delete 数据
ORACLE
HANA
delete from t1 a where exists (select 1 from t2 b delete from t1 a where exists (select 1 from t2 b
where a.id = b.id )
HANA 的 DELETE 语句与 ORACLE 类似,FROM 子句只支持 1 个表(即需要从中删除记录的表)。
如果某个表需要删除的记录集合与其他表相关,那么需要在WHERE 条件中实现关联。
1.6. with 子句
SQL 用法:
ORACLE
HANA
with
select t.* from a t)
select * from (select * from
"STS"."TF_RBAC_DEPARTMENT") bb
在 HANA 中,不支持 with 子句功能
1.7. update 表
SQL 用法:
HANA
update "STS"."TF_RBAC_DEPARTMENT" update "STS"."TF_RBAC_DEPARTMENT" t
t
set (addr,sort)=('11111',100)
对比说明:
update 数据表语句一致
1.8. 多表关联 update
SQL 用法:
HANA
update TF_RPT_AJ_M_JZJCSJB t
set (t.tcrq,t.zjycdxsj)=(select
t1.tbbssj,t1.tjsj
update "TB"."TF_RPT_AJ_M_JZJCSJB" t
set
(t.tcrq,t.zjycdxsj)=(t1.tbbssj,t1.tjs
j)
from TF_RPT_HN_STAT_BSHZQK t1
where t.issue=t1.issue and
t.dept_id=t1.dept_id and
t1.rpt_id='HAY01')
where exists (select 1
from TF_RPT_HN_STAT_BSHZQK t1
where t.issue=t1.issue and
t.dept_id=t1.dept_id and
t1.rpt_id='HAY01'
from "TB"."TF_RPT_HN_STAT_BSHZQK" t1
where t.issue=t1.issue
and t.dept_id=t1.dept_id
and t1.rpt_id='HAY01'
)
在 hana 中,如果某个表需要更新的记录集合与其他表相关,那么需要在FROM 子句中指定
相关的表,在 WHERE 子句中加入关联条件;
而对于 oracle,多表关联 update 复杂一些,oracle 不支持 from 子句,即不支持 update from
语法
插入更新
1.9.
SQL 用法:
ORACLE
HANA
UPSERT T(key,val) VALUES (1, 9) WHERE
UPSERT T(key,val) VALUES (1, 8) WITH
PRIMARY KEY;
Oracle 的 merge into 从 9i 就存在,可以对存在的记录进行更新,对于新的记录插入,避免
proc 中条件判断的低效率,相关信息可以自行baidu;
Hana 的 upsert 可以对存在的记录进行更新,对于新的记录插入,在列出的字段中,必须包
含所有的主键字段,需要注意的是,upsert 不是标准的 sql 语句,在各个数据库中不同
1.10. 多表关联插入更新
关联其他数据表数据,对于已经存在的记录进行更新,对于新的记录插入
ORACLE
HANA
merge into
UPSERT "TB"."TF_RPT_AJ_M_JZJCSJB"
(issue,dept_id,jz_id,tcrq,zjycdxsj)
select
t1.issue,t1.dept_id,t.jz_id,t1.tbbssj
,t1.tjsj
from "TB"."TF_RPT_HN_STAT_BSHZQK"
t1,TF_RPT_AJ_M_JZJCSJB t
where t.issue=t1.issue
and t.dept_id=t1.dept_id
and t1.rpt_id='HAY01'
对比说明:
Oracle 的 merge into 从 9i 就存在,可以对存在的记录进行更新,对于新的记录插入,避免
proc 中条件判断的低效率,相关信息可以自行baidu;
Hana 的 upsert 可以对存在的记录进行更新,对于新的记录插入,在列出的字段中,必须包
含所有的主键字段,多表关联时,比较类似insert 语法
需要注意的是,upsert 不是标准的 sql 语句,在各个数据库中不同
1.11. like 搜索
SQL 用法:
ORACLE
HANA
"STS"."tf_rpt_hn_stat_bshzqk" t
where t.dept_id like '100_'
like 数据表语句一致,可以用%或是_进行匹配
1.12. case when
SQL 用法:
HANA
case when t.jzlb='火电' then 'HD'
when t.jzlb='水电' then 'SD'
ELSE 'UNKOWN' END
from tf_rpt_dept_jzxx t
from "STS"."tf_rpt_dept_jzxx" t
对比说明:
case when 使用同 oracle 一样,
剩余18页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STC15单片机串口2使用程序例子
- 读取日志的excel生成周报 用python3开发weekplan-master.zip
- python 读取excel数据导入dbimport-data-master.zip
- K折交叉验证BP神经网络,多输入多输出BP神经网络(代码完整,数据齐全)
- B07训练原图.zip
- python-对Excel数据处理做可视化分析.zip
- 人工智能大作业-无人机图像目标检测的python源代码+文档说明.zip
- 基于GoogLeNet实现Cifar-10图像分类项目python源码(高分项目).zip
- 数据库 sql 面试题目及答案解析.docx
- 汽车常见 10 种传感器故障后的表现与解决措施.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功