oracle与db2的sql区别:1、oracle用“create table a as select * from b”创建类似表,db2用“create table a like b”创建类似表;2、oracle用“to_char”函数转换,db2用varchar类型转换。
本教程操作系统:windows10系统、Oracle 19c版本、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关键字
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的sql区别是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

国产AI黑马DeepSeek强势崛起,震撼全球AI界!这家成立仅一年半的中国人工智能公司,凭借其免费开源的大模型DeepSeek-V3和DeepSeek-R1,在性能上与OpenAI等国际巨头比肩,甚至在成本控制方面实现了突破性进展,赢得了全球用户的广泛赞誉。DeepSeek-R1现已全面上线,性能媲美OpenAIo1正式版!您可以在网页端、APP以及API接口体验其强大的功能。下载方式:支持iOS和安卓系统,用户可通过应用商店下载;网页版也已正式开放!DeepSeek网页版官方入口:ht

DeepSeek:火爆AI遭遇服务器拥堵,如何应对?DeepSeek作为2025年开年爆款AI,免费开源且性能媲美OpenAIo1正式版,其受欢迎程度可见一斑。然而,高并发也带来了服务器繁忙的问题。本文将分析原因并提供应对策略。DeepSeek网页版入口:https://www.deepseek.com/DeepSeek服务器繁忙的原因:高并发访问:DeepSeek的免费和强大功能吸引了大量用户同时使用,导致服务器负载过高。网络攻击:据悉,DeepSeek对美国金融界造成冲击,

2025年开年,国产AI“深度求索”(deepseek)惊艳亮相!这款免费开源的AI模型,性能堪比OpenAI的o1正式版,并已在网页端、APP和API全面上线,支持iOS、安卓和网页版多端同步使用。深度求索deepseek官网及使用指南:官网地址:https://www.deepseek.com/网页版使用步骤:点击上方链接进入deepseek官网。点击首页的“开始对话”按钮。首次使用需进行手机验证码登录。登录后即可进入对话界面。deepseek功能强大,可进行代码编写、文件读取、创

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

记事本++7.3.1
好用且免费的代码编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境