Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apa perbedaan antara 'tidak ada' dan 'tidak ada'?

Perbedaan antara TIDAK DI dan TIDAK ADA menjadi jelas di mana ada NULL nilai yang disertakan dalam hasil.

Misalnya:

create table test_a (col1 varchar2(30 char));
create table test_b (col1 varchar2(30 char));

insert into test_a (col1) values ('a');
insert into test_a (col1) values ('b');
insert into test_a (col1) values ('c');
insert into test_a (col1) values ('d');
insert into test_a (col1) values ('e');

insert into test_b (col1) values ('a');
insert into test_b (col1) values ('b');
insert into test_b (col1) values ('c');
insert into test_b (col1) values (null);

Catatan :Perbedaan utama mereka adalah test_b berisi null nilai.

select * from test_a where col1 not in (select col1 from test_b);

Tidak ada baris yang dikembalikan

select * from test_a where 
    not exists
        (select 1 from test_b where test_b.col1 = test_a.col1);

Pengembalian

col1
====
d
e


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah Oracle mengembalikan transaksi pada kesalahan?

  2. Tidak dapat memahami bagaimana nilai dikonversi ke format tanggal secara implisit

  3. Tanggal ditambahkan dan tanggal modifikasi untuk audit tabel Oracle

  4. Ulangi nilai yang telah ditentukan sebelumnya

  5. DBMS_LOB.SUBSTR() melempar buffer string karakter kesalahan terlalu kecil