ホームページ > データベース > Oracle > db2 と oracle の SQL ステートメントの違いは何ですか?

db2 と oracle の SQL ステートメントの違いは何ですか?

WBOY
リリース: 2022-05-30 18:13:30
オリジナル
2687 人が閲覧しました

違い: 1. db2 は「create table a like b」を使用して同様のテーブルを作成しますが、oracle は「create table a as select * from b」を使用します; 2. db2 は varchar 型変換を使用し、oracle は「 to_char」関数を変換します。

db2 と oracle の SQL ステートメントの違いは何ですか?

このチュートリアルの動作環境: Windows 10 システム、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 <h4><strong>4. システム時刻を取得する構文</strong></h4><pre class="brush:php;toolbar:false">Oracle :
	select sysdate from dual;
DB2    :
	select current timestamp from sysibm.sysdummy1;
ログイン後にコピー

5. null 値を変換するさまざまな方法

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' )
ログイン後にコピー

db2 と oracle の SQL ステートメントの違いは何ですか?
詳細: Oracle 階層クエリ (再帰クエリ): で開始…前に接続および 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
ログイン後にコピー

db2 と oracle の SQL ステートメントの違いは何ですか?
db2 と oracle の SQL ステートメントの違いは何ですか?
上記のように、親ノードの孫から始まるすべての孫をクエリします。対象者:

test_parent##息子#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 Video Tutorial

以上がdb2 と oracle の SQL ステートメントの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート