HANASQL参考及Oracle对照v06Word文档格式.docx
- 文档编号:881344
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:28
- 大小:26.93KB
HANASQL参考及Oracle对照v06Word文档格式.docx
《HANASQL参考及Oracle对照v06Word文档格式.docx》由会员分享,可在线阅读,更多相关《HANASQL参考及Oracle对照v06Word文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
max(decode(t.zbdm,'
FDCYXQK_0001'
t.zbz,null))A,
FDCYXQK_0002'
t.zbz,null))B,
FDCYXQK_0003'
t.zbz,null))C
fromtf_rpt_item_data_fdsct
groupbyt.issue,t.dept_id,t.obj_add_id
max(map(t.zbdm,'
from"
tf_rpt_item_data_fdsc"
在HANA中,没有decode函数,与之功能相同的是map函数
1.3.nullif
一般用于设置被除数条件,当被除数为0时,设置结果为null
select100/nullif(0,0)
fromdualt
fromDUMMY
在ORACLE与HANA中,nullif功能相同,不同的是HANA没有dual表,只有DUMMY表
1.4.nvl(oracle),ifnull(hana)
当参数值为null时,返回指定的value
selectnvl(aaa,0)
fromtabt
hana中为ifnull;
oracle中为nvl
1.5.delete
delete数据
deletefromt1awhereexists(select1fromt2bwherea.id=b.id)
HANA的DELETE语句与ORACLE类似,FROM子句只支持1个表(即需要从中删除记录的表)。
如果某个表需要删除的记录集合与其他表相关,那么需要在WHERE条件中实现关联。
1.6.with子句
用于定义虚拟表,方便多层嵌套语句的可读性
withbbas(
selectt.*fromat)
select*frombb
with子句写法语法有误
替代写法
select*from(select*from"
STS"
."
TF_RBAC_DEPARTMENT"
)bb
在HANA中,不支持with子句功能
1.7.update表
update数据表中的数据
update"
set(addr,sort)=('
11111'
100)
update数据表语句一致
1.8.多表关联update
updateTF_RPT_AJ_M_JZJCSJBt
set(t.tcrq,t.zjycdxsj)=(selectt1.tbbssj,t1.tjsj
fromTF_RPT_HN_STAT_BSHZQKt1
wheret.issue=t1.issueandt.dept_id=t1.dept_idandt1.rpt_id='
HAY01'
)
whereexists(select1
TB"
TF_RPT_AJ_M_JZJCSJB"
set(t.tcrq,t.zjycdxsj)=(t1.tbbssj,t1.tjsj)
TF_RPT_HN_STAT_BSHZQK"
t1
wheret.issue=t1.issue
andt.dept_id=t1.dept_id
andt1.rpt_id='
在hana中,如果某个表需要更新的记录集合与其他表相关,那么需要在FROM子句中指定相关的表,在WHERE子句中加入关联条件;
而对于oracle,多表关联update复杂一些,oracle不支持from子句,即不支持updatefrom语法
1.9.插入更新
对于已经存在的记录进行更新,对于新的记录插入
mergeinto
UPSERTT(key,val)VALUES(1,9)WHEREKEY=1;
UPSERTT(key,val)VALUES(1,8)WITHPRIMARYKEY;
Oracle的mergeinto从9i就存在,可以对存在的记录进行更新,对于新的记录插入,避免proc中条件判断的低效率,相关信息可以自行baidu;
Hana的upsert可以对存在的记录进行更新,对于新的记录插入,在列出的字段中,必须包含所有的主键字段,需要注意的是,upsert不是标准的sql语句,在各个数据库中不同
1.10.多表关联插入更新
关联其他数据表数据,对于已经存在的记录进行更新,对于新的记录插入
UPSERT"
(issue,dept_id,jz_id,tcrq,zjycdxsj)
selectt1.issue,t1.dept_id,t.jz_id,t1.tbbssj,t1.tjsj
t1,TF_RPT_AJ_M_JZJCSJBt
Hana的upsert可以对存在的记录进行更新,对于新的记录插入,在列出的字段中,必须包含所有的主键字段,多表关联时,比较类似insert语法
需要注意的是,upsert不是标准的sql语句,在各个数据库中不同
1.11.like搜索
用like进行模糊搜索
wheret.dept_idlike'
100_'
like数据表语句一致,可以用%或是_进行匹配
1.12.casewhen
在sql中使用if…then…else逻辑
selectt.jzlb,
casewhent.jzlb='
火电'
then'
HD'
whent.jzlb='
水电'
SD'
ELSE'
UNKOWN'
END
fromtf_rpt_dept_jzxxt
tf_rpt_dept_jzxx"
casewhen使用同oracle一样,
1.13.多表关联
2个及以上数据表关联查询
select*
fromtf_rpt_dept_jzxxt,tf_rpt_hn_stat_bshzqkt1
wheret.dcdm=t1.dept_id
t,"
写法一样
1.14.外关联
外连接查询
leftouterjointf_rpt_hn_stat_bshzqkt1
ont.dcdm=t1.dept_id
wheret1.issue='
320131100'
leftouterjoin"
写法一样,另外说明Oracle有一种(+)的外关联写法,不推荐这种方式
1.15.当前时间1天后
selectsysdate+1
selectADD_DAYS(CURRENT_TIMESTAMP,1)fromdummy
在hana中,日期时间不能加减number,只能通过日期时间函数
当前时间1个月后
selectadd_months(sysdate,1)
selectADD_MONTHS(CURRENT_TIMESTAMP,1)fromdummy
1.16.返回数据集的前几个记录
用于返回sql查询数据集的前几个记录
select*fromdualt
whererownum<
=10andrownum>
=5
wheret.issue='
2013-12'
limit10offset5
在oracle中,是通过其内置的rownum字段进行记录集的截取;
在hana中,是通过limit子句进行
1.17.全球唯一标识符
返回全球唯一的标识符,常用于写主键值
selectsys_guid()fromdual;
selectSYSUUIDfromdummy;
Hana与oracle中都是通过函数实现返回全球唯一的标识符,生成一个16字节的原始值,每个字节2个16进制显示位,即可认为是32位长度的字符串,
该标识符主要是用于数据表主键字段的取值,避免seq的序列值,同时对数据表数据的合并时很有用。
1.18.计算累计partitionby
计算累计
selectt.issue,t.zbz,sum(zbz)over(partitionbysubstr(t.issue,1,5)orderbyt.issue)
wheresubstr(t.issue,1,5)='
32013'
andt.zbdm='
FDCYXQK_0004'
andt.dept_id='
10272700'
andt.obj_add_id='
1'
selectt.issue,t.zbz,sum(zbz)over(partitionbysubstr(t.issue,1,5)orderbyt.issue)
Hana与oracle的计算累计sql是一致的,同时其他的聚合函数,如max、min、avg等都支持partitionby
2.数据类型对比
2.1.日期时间类型
2.1.1.DATE
DATE
可用的日期范围从BC4712年1月1日至AC9999年12月31日
数据包含世纪、年份、月、日、时、分、秒信息,最小时间粒度是秒
默认格式为“YYYY-MM-DD”
时间值的范围从0001-01-01至9999-12-31
DATE数据类型由年、月、日信息组成,表示一个日期值,最小时间粒度为日
DATA类型的默认格式为‘YYYY-MM-DD’。
YYYY表示年,MM表示月而DD表示日。
虽然在Oracle和Hana中都有DATE数据类型,但是需要注意的是在HANA中,date只表示日期,即数据精度为日,这一点与Oracle中的date有很大不同
2.1.2.TIME
无
TIME
TIME数据类型由小时、分钟、秒信息组成,表示一个时间值。
TIME类型的默认格式为‘HH24:
MI:
SS’。
HH24表示从0至24的小时数,MI代表0至59的分钟值而SS表示0至59的秒
HANA中的time类型表示时间,而Oracle中没有对应的类型
2.1.3.SECONDDATE
SECONDDATE
HANA中的SECONDDATE表示日期时间,与oracle中的date相同,只是可用时间范围不同
2.1.4.Timestamp
TIMESTAMP
TIMESTAMP数据类型由日期和时间信息组成。
其默认格式为‘YYYY-MM-DDHH24:
SS.FF6’
其中精度位为0至9
SS.FF7’。
FFn代表含有小数的秒,其中n表示小数部分的数字位数。
时间戳的范围从0001-01-0100:
00:
00.0000000至9999-12-3123:
59:
59.9999999
其中精度位为1至7
ORACLE与HANA中的TIMESTAMP表示日期时间,以及表示精度的小数位秒,Oracle默认精度为0.000001秒,HANA默认精度为0.0000001秒
2.2.数字类型
2.2.1.DECIMAL
NUMBER
DECIMAL
Numberhavingprecisionpandscales.Theprecisionpcanrangefrom1to38.Thescalescanrangefrom-84to127
DECIMAL(p,s)数据类型指定了一个精度为p小数位数为s的定点小数。
精度是有效位数的总数,范围从1至34。
小数位数是从小数点到最小有效数字的数字个数,范围从-6,111到6,176,这表示位数指定了十进制小数的指数范围从10-6111至106176。
如果没有指定小数位数,则默认值为0。
当数字的有效数字在小数点的右侧时,小数位数为正;
有效数字在小数点左侧时,小数位数为负。
ORACLE中的number与HANA中的decimal是基本一致的,在精度和小数位数的范围上有所不同
2.3.字符类型
2.3.1.VARCHAR2
VARCHAR2
VARCHAR
varchar2
存放字符数据最大长度为4000字节
varchar2把一般情况下所有字符都占两字节处理
VARCHAR2把空串等同于null处理
VARCHAR2字符要用几个字节存储,要看数据库使用的字符集
VARCHAR(n)数据类型定义了一个可变长度的ASCII字符串,n表示最大长度,是一个1至5000的整数值
ORACLE中的varchar2与HANA中的varchar是基本一致的,在最大长度上有所区别
2.3.2.NVARCHAR
NVARCHAR2
NVARCHAR
nvarchar2用于存储可变长度的字符串,size的最大值是4000,而最小值是1,其值表示字符的个数,而不是字节数
NVARCHAR(n)数据类型定义了一个可变长度的Unicode字符串,n表示最大长度,是一个1至5000的整数值
ORACLE中的nvarchar2与HANA中的nvarchar是基本一致的,在最大长度上有所区别
2.4.大对象类型
2.4.1.BLOB
CLOB
可用来存储无结构的二进制数据
最大长度是4GB
BLOB数据类型用来存储大二进制数据
最大大小为2GB
ORACLE和HANA中的BLOB是基本一致的,在最大大小上有所区别
2.4.2.CLOB
用于存储对应于数据库定义的字符集的字符数据
CLOB数据类型用来存储大ASCII字符数据
ORACLE和HANA中的CLOB是基本一致的,在最大大小上有所区别
2.4.3.NCLOB
NCLOB
用来存储定宽多字节字符数据,保存本地语言字符集数据最大长度是4GB
NCLOB数据类型用来存储大Unicode字符对象
ORACLE和HANA中的NCLOB是基本一致的,在最大大小上有所区别
2.4.4.TEXT
TEXT
TEXT数据类型指定支持文本搜索功能,这不是一个独立的SQL类型。
选择一列TEXT列会生成一个NCLOB类型的列
TEXT是HANA所特有的数据类型,是为了满足其非结构化数据分析的需要,Oracle中没有相应的数据类型
3.SQL函数
3.1.数据类型转换函数
3.1.1.CAST
CAST
CAST(expressionASdata_type)
CASTconvertsonebuilt-indatatypeorcollection-typedvalueintoanotherbuilt-indatatypeorcollection-typedvalue.
用来把参数从一个数据类型转换为另一个数据类型,或者测试转换是否可行
selectCAST(111ASDATE)FROMDUAL
执行出错
selectCAST(111ASDATE)FROMDUMMY
CAST在oracle和hana中功能是一致的,只是在转换类型方面有所差距,比如,oracle中number不能转换成date,而hana中可以
3.1.2.TO_ALPHANUM
TO_ALPHANUM
TO_ALPHANUM(value)
将给定的value转换为ALPHANUM数据类型。
SELECTTO_ALPHANUM('
10'
)"
toalphanum"
F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HANASQL 参考 Oracle 对照 v06