Maison > Problème commun > le corps du texte

Quelle est la différence entre Oracle et DB2 SQL

小老鼠
Libérer: 2023-07-05 14:55:36
original
1290 Les gens l'ont consulté

La différence SQL entre Oracle et db2 : 1. Oracle utilise « créer une table a en sélectionnant * à partir de b » pour créer une table similaire, et db2 utilise « créer une table a comme b » pour créer une table similaire ; la fonction "to_char" pour convertir, db2 utilise la conversion de type varchar.

Quelle est la différence entre Oracle et DB2 SQL

Le système d'exploitation de ce tutoriel : système Windows 10, Oracle version 19c, ordinateur Dell G3.

Quelle est la différence entre les instructions DB2 et Oracle SQL

1. Créez une syntaxe de table similaire

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
Copier après la connexion

2 Effacez rapidement la syntaxe des grandes tables

Oracle :
    truncate table a;
DB2    :
    alter table a active not logged initially with empty table;
Copier après la connexion

3 Obtenez la première syntaxe de données N

Oracle :
    select * from a where rownum <= N;
DB2    :
    select * from a fetch first N rows only;
Copier après la connexion

4. Grammaire de l'heure système

Oracle :
    select sysdate from dual;
DB2    :
    select current timestamp from sysibm.sysdummy1;
Copier après la connexion

5. Les méthodes de conversion de valeurs nulles sont différentes

Oracle :
    select col1,col2,nvl(col3,&#39;0&#39;) from tablename; (判断col3字段是否为空,不为空就输出原来的数值,为空就输出0)
DB2   :
    select col1,col2,value(col3,&#39;0&#39;) from tablename;
     
    (mysql和Db2可以使用Coalesce(col3,&#39;0&#39;)函数来实现上述功能)
Copier après la connexion

Fonction Coalesce()

这个函数主要用来进行空值处理,其参数格式如下: COALESCE ( expression,value1,value2……,valuen)
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。
    如果expression不为空值则返回expression;
    否则判断value1是否是空值,如果value1不为空值则返回value1;
    否则判断value2是否是空值,如果value2不为空值则返回value2;
    ……以此类推,
    如果所有的表达式都为空值,则返回NULL。
Copier après la connexion

6. Les méthodes de conversion de type sont différentes

oracle :
    select to_char(sysdate,&#39;YYYY-MM-DD HH24:MI:SS&#39;) from dual;
DB2    :
    select varchar(current timestamp) from sysibm.sysdummy1;
Copier après la connexion

Analyse :

Oracle数据类型改变函数:to_char()、to_date()、to_number()等;
    如果仅仅取年,月,日等,可以用
        to_char(sysdate, &#39;YYYY&#39;),
        to_char(&#39;MM&#39;) ,
        to_char(&#39;DD&#39;)取得。
    只取年月日TRUNC(SYSDATE)。
    取时分秒TO_CHAR(SYSDATE,&#39;HH24:MI:SS&#39;)。
 
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(&#39;2002-10-2012:00:00&#39;),
        DATE(&#39;2002-10-20&#39;),
        DATE(&#39;10/20/2002&#39;),
        TIME(&#39;12:00:00&#39;)
Copier après la connexion

Actuellement, DB2 V8 prend également en charge to_char et to_date, et V9. La version a été ajoutée à des dates de différentes manières (vers_Number / Cast). plus : Requête hiérarchique Oracle (requête récursive) : commencez par... connectez-vous par précédent et le mot-clé de niveau

DB2:

Oracle:
    select to_number(&#39;123&#39;) from dual;
    select cast(&#39;123&#39; as integer) from dual;
DB2   :
    select cast(&#39;123&#39; as integer) from sysibm.sysdummy1;
    select cast(current time as char(8)) from sysibm.sysdummy1;
Copier après la connexion

Comme indiqué ci-dessus, commencez par petit-enfant pour interroger tous ses nœuds parents, définissez d'abord le début point de la table virtuelle, c'est-à-dire La quatrième rangée à gauche ; remontez un par un, son père est fils = enfant dans la rangée précédente, c'est-à-dire VT.parent = T.enfant...

La requête finale le résultat est :

Quelle est la différence entre Oracle et DB2 SQLtest_parent

son

father

grandpaQuelle est la différence entre Oracle et DB2 SQL

10. Il existe des différences dans les types de données

Oracle:
    直接用子查询
 
Db2:WITH语句
    WITH  a1 AS(SELECT max(id) AS aa1 FROM test )SELECT id ,aa1 FROM test ,a1
Copier après la connexion

11 À propos de la méthode rowId

Oracle递归查询:CONNECT BY PRIOR ... START WITH ...
DB2   递归查询:DB2较难理解,要WITH一个虚拟表
Copier après la connexion

12.decode

//从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 = &#39;son&#39; )
Copier après la connexion
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal