La versión de base de datos Oracle 20c, presenta el nuevo operador EXCEPT/EXCEPT ALL
EXCEPT es un estándar ANSI.
Oracle 20c agrega soporte para la opción "ALL" para operadores de conjuntos INTERSECT y MINUS
EXCEPT el operador del conjunto elimina las filas del primer conjunto que también aparecen en el segundo conjunto –con eliminación duplicada– sinónimo de MINUS y tiene exactamente la misma semántica
EXCEPT ALL devuelve filas presentes en el primer conjunto pero no en el segundo. –Puede haber duplicados en el resultado final.
Veamos su funcionamiento, a partir de la creación de un par de tablas con algunos pocos registros.
[oracle@oracledbacr ~]$ sqlplus aprendizaje/ORacle_20_21@lab2
SQL*Plus: Release 20.0.0.0.0 - Production on Sat Apr 11 00:48:42 2020
Version 20.2.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Fri Apr 10 2020 23:51:24 +00:00
Connected to:
Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0
SQL> show user
USER is "APRENDIZAJE"
SQL> connect system/ORacle_20_21@lab2;
Connected.
SQL> create table t1( x number, y number);
Table created.
SQL> insert into t1 values (&v_x, &v_y);
Enter value for v_x: 1
Enter value for v_y: 2
old 1: insert into t1 values (&v_x, &v_y)
new 1: insert into t1 values (1, 2)
1 row created.
SQL> /
Enter value for v_x: 3
Enter value for v_y: NULL
old 1: insert into t1 values (&v_x, &v_y)
new 1: insert into t1 values (3, NULL)
1 row created.
SQL> /
Enter value for v_x: NULL
Enter value for v_y: 4
old 1: insert into t1 values (&v_x, &v_y)
new 1: insert into t1 values (NULL, 4)
1 row created.
SQL> /
Enter value for v_x: NULL
Enter value for v_y: ^C
SQL> select * from t1;
X Y
---------- ----------
1 2
3
4
SQL> insert into t1 values (&v_x, &v_y);
Enter value for v_x: 3
Enter value for v_y: 3
old 1: insert into t1 values (&v_x, &v_y)
new 1: insert into t1 values (3, 3)
1 row created.
SQL> /
Enter value for v_x: 5
Enter value for v_y: 5
old 1: insert into t1 values (&v_x, &v_y)
new 1: insert into t1 values (5, 5)
1 row created.
SQL> /
Enter value for v_x: NULL
Enter value for v_y: 5
old 1: insert into t1 values (&v_x, &v_y)
new 1: insert into t1 values (NULL, 5)
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t1;
X Y
---------- ----------
1 2
3
4
3 3
5 5
5
6 rows selected.
SQL> create table t2( x number, y number);
Table created.
SQL> insert into t2 values (&v_x, &v_y);
Enter value for v_x: 3
Enter value for v_y: 3
old 1: insert into t2 values (&v_x, &v_y)
new 1: insert into t2 values (3, 3)
1 row created.
SQL> /
Enter value for v_x: 3
Enter value for v_y: 3
old 1: insert into t2 values (&v_x, &v_y)
new 1: insert into t2 values (3, 3)
1 row created.
SQL> /
Enter value for v_x: 4
Enter value for v_y: 4
old 1: insert into t2 values (&v_x, &v_y)
new 1: insert into t2 values (4, 4)
1 row created.
SQL> /
Enter value for v_x: 5
Enter value for v_y: 5
old 1: insert into t2 values (&v_x, &v_y)
new 1: insert into t2 values (5, 5)
1 row created.
SQL> /
Enter value for v_x: NULL
Enter value for v_y: 4
old 1: insert into t2 values (&v_x, &v_y)
new 1: insert into t2 values (NULL, 4)
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t1;
X Y
---------- ----------
1 2
3
4
3 3
5 5
5
6 rows selected.
SQL> select * from t2;
X Y
---------- ----------
3 3
3 3
4 4
5 5
4
SQL> select x from t1
2 except
3 select x from t2;
X
----------
1
SQL> select y from t1
2 except
3 select y from t2;
Y
----------
2
SQL> set null 'NULL'
SQL> select y from t1
2 except
3 select y from t2;
Y
----------
2
NULL
SQL> select x from t1
2 except all
3 select x from t2;
X
----------
1
NULL
SQL> select y from t1
2 except all
3 select y from t2;
Y
----------
2
5
NULL
SQL>
No hay comentarios:
Publicar un comentario
Te agradezco tus comentarios. Te esperamos de vuelta.