db2与oracle的sql语句有什么区别


区别:1、db2用“create table a like b”创建类似表,oracle用“create table a as select * from b”;2、db2用varchar类型转换,oracle用“to_char”函数转换。

db2与oracle的sql语句有什么区别

本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

db2与oracle的sql语句有什么区别

1.创建类似表语法

Oracle : 
	create table a as select * from b;
DB2    : 
	create table a like b;
		 
	(8版本有效,9版本无效)
	create table new_a as select col1,col2... from a definition only

2.快速清空大表语法

Oracle : 
	truncate table a;
DB2    :
	alter table a active not logged initially with empty table;

3.取前N条数据语法

Oracle : 
	select * from a where rownum <= N;
DB2    :
	select * from a fetch first N rows only;

4.取得系统时间语法

Oracle :
	select sysdate from dual;
DB2    :
	select current timestamp from sysibm.sysdummy1;

5.空值转换方式不同

Oracle :
	select col1,col2,nvl(col3,'0') from tablename; (判断col3字段是否为空,不为空就输出原来的数值,为空就输出0)
DB2   :
	select col1,col2,value(col3,'0') from tablename;
	
	(mysql和Db2可以使用Coalesce(col3,'0')函数来实现上述功能)
Coalesce()函数
这个函数主要用来进行空值处理,其参数格式如下: COALESCE ( expression,value1,value2……,valuen) 
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。
	如果expression不为空值则返回expression;
	否则判断value1是否是空值,如果value1不为空值则返回value1;
	否则判断value2是否是空值,如果value2不为空值则返回value2;
	……以此类推,
	如果所有的表达式都为空值,则返回NULL。

6.类型转换方式不同

oracle :
	select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
DB2    :
	select varchar(current timestamp) from sysibm.sysdummy1;

解析:

Oracle数据类型改变函数:to_char()、to_date()、to_number()等;
	如果仅仅取年,月,日等,可以用
		to_char(sysdate, 'YYYY'),
		to_char('MM') ,
		to_char('DD')取得。
	只取年月日TRUNC(SYSDATE)。
	取时分秒TO_CHAR(SYSDATE,'HH24:MI:SS')。

DB2数据类型改变函数:char()、varchar()、int()、date()、time()等;
	取得年,月,日等的写法:
		YEAR(current timestamp),
		MONTH(current timestamp),
		DAY(current timestamp),
		HOUR(current timestamp),
		MINUTE(current timestamp),
		SECOND(current timestamp),
		MICROSECOND(current timestamp),
	只取年月日可以用
		DATE(current timestamp),
	取时分秒
		TIME(current timestamp)。
	Char()是定长字符串(1-255),varchar()为非定长字符串(1-32672)日期,
	时间形态变为字符形态: 
		char(current date),
		char(current time)
	将字符串转换成日期或时间形态:
		TIMESTAMP('2002-10-2012:00:00'),
		DATE('2002-10-20'),
		DATE('10/20/2002'),
		TIME('12:00:00')

目前DB2 V8也支持to_char和to_date,V9版新增了to_number

7.字符串转换为日期方式不同(To_Number/cast)

Oracle:
	select to_number('123') from dual;
	select cast('123' as integer) from dual;
DB2   :
	select cast('123' as integer) from sysibm.sysdummy1;
	select cast(current time as char(8)) from sysibm.sysdummy1;

8.子查询

Oracle:
	直接用子查询

Db2:WITH语句
	WITH  a1 AS(SELECT max(id) AS aa1 FROM test )SELECT id ,aa1 FROM test ,a1

9.递归查询(分层查询)

Oracle递归查询:CONNECT BY PRIOR ... START WITH ...
DB2   递归查询:DB2较难理解,要WITH一个虚拟表
Oracle:
//从child是son的数据向上查询出所有的长辈select distinct test_parent from (
       select t.test_parent from t_test t 
              connect by prior t.test_parent = t.test_child 
              start with t.test_child = 'son' )

在这里插入图片描述
了解更多:Oracle分层查询(递归查询):start with…connect by prior 以及 level关键字

一览妙笔 一览妙笔

自媒体、编剧、营销人员写作工具

一览妙笔 50 查看详情 一览妙笔
DB2:
// Db2递归查询写法with par_test(test_child,test_parent) as(
     select test_child,test_parent from t_test where child='grandchild'  -- 设置递归起点
     union all
     select t.test_child,t.test_parent from par_test pt,t_test t where pt.test_parent = t.test_child ----递归的方向为从子向父)select distinct test_parent from par_test

在这里插入图片描述
在这里插入图片描述
如上图,从grandchild开始查询其所有的父节点,首先设定虚拟表起点,即左边第四行;依次往上推,其父亲是son = 上一行的child,即VT.parent = T.child…

最后查询结果为:

test_parent
son
father
grandpa

10.数据类型有差别

比较大的差别:
1. char大小对比
   Oracle: char 2000
   DB2   : char 254
2. 日期类型
   Oracle: date datetime
   DB2   :date(日期) time(时间)timestamp(日期时间)

11.关于rowId

Oracle中它是由数据库唯一产生的,在程序中可以获得
DB2  在V8版本才有此功能

12.decode方法

Oracle: 
	decode方法(decode(条件,值1,翻译值1,值2,翻译值2,...,值n,翻译值n,缺省值)) 【函数用法在下边有链接】
	或者
	case语句

DB2:
	只有case表达式

	示例语句:
	select id,name,
		case when integer(flag)=0 then '假'
			 when integer(flag)=1 then '真'
		else '异常' end
	from test
	或者
	select id,name,
		case integer(flag) when 0 then '假' 
						   when 1 then '真'
		else '异常' end
	from test

推荐教程:《Oracle视频教程》

以上就是db2与oracle的sql语句有什么区别的详细内容,更多请关注其它相关文章!


# 怎么看  # 海珠定制型网站建设推广  # 一直做的网站推广有哪些  # 即墨区外贸网站建设  # 南宁seo排名首页公司  # 陵水网站建设公司  # 宁波易通建设网站  # 敦煌网站推广要买会员吗  # 宿迁推广网络营销公司  # 谷歌seo sem区别  # 众筹平台营销推广策略  # oracle  # 插入图片  # 可以用  # 第一个  # 定长  # 默认值  # 有什么区别  # 在这里  # 为空  # 递归 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 使用VS Code调试Python代码:从入门到精通  向往的生活小游戏启动处_向往的生活小游戏立即启动  《tt语音》超级玩家开通方法  PHP与SQL实践:高效实现数据复制与特定列值修改  windows server2019显卡驱动怎么安装_winserver2019显卡驱动安装与远程桌面优化  网站体验不好=浪费钱:如何提升-用户体验效果差  Yandex世界探索 最新官方免登录入口全知道  如何定制PrimeNG Sidebar的背景颜色  小米civi如何设置锁屏时间  C++如何实现单例模式_C++线程安全的单例模式写法  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  如何自定义苹果手机铃声  Three.js中动态更换3D模型纹理的教程  折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点  邮政快递寄件查询入口 邮政快递收件查询入口  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  Golang如何初始化module项目_Golang module init使用说明  yy漫画官方网站登录入口_yy漫画在线阅读页面地址  《下一站江湖2》大雪山加入方法  Dash应用中自定义HTML页面标题与网站图标(F*icon)的实用指南  PHP中获取HTTP响应状态消息:方法与限制  抖音作品被限流怎么办 抖音内容优化与流量恢复方法  BunnyStream TUS视频上传指南:解决401认证错误与参数配置  《随手记》备份数据方法  《小宇宙》标记不友善评论方法  Sublime怎么格式化HTML代码_Sublime前端代码美化插件使用指南  蜻蜓FM如何设置移动流量播放  《东方航空》添加乘机人方法  2025考研成绩查询时间入口分享  C#解析来自网络的XML流数据 实时错误处理与重试机制  Go反射进阶:访问内嵌结构体中的被遮蔽方法  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  优化2xN网格最大路径和的动态规划算法实践  《微信》视频号原创声明开启方法  键盘保修需要什么_键盘售后维修流程  被称为海蜈蚣的海洋动物是  菜鸟裹裹怎样获得取件码_菜鸟裹裹获得取件码步骤  重返未来:1999卡戎全方位攻略  Lar*el 中高效执行多列更新:单次查询实现  Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】  批改网网页版登录 批改网电脑版学生登录入口  《下一站江湖2》风神腿获取攻略  鸿蒙单条备忘录如何加密  如何用mysql开发用户注册登录功能_mysql用户注册登录数据库设计  PHP多语言网站的实现:会话管理与翻译函数优化教程  《三角洲行动》战斗步枪与机枪类改装代码分享  苹果手机手电筒无法开启  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  国际经济与贸易就业方向解析  顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南 

 2022-05-30

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.