Dalam SQL, tidak sama dengan operator (!=
) membandingkan ketidaksetaraan dua ekspresi. Artinya, ini menguji apakah satu ekspresi tidak sama dengan ekspresi lain.
Jika salah satu atau kedua operan adalah NULL
, NULL
dikembalikan.
SQL juga memiliki operator lain yang tidak sama (<>
), yang melakukan hal yang sama. Yang mana yang Anda gunakan mungkin bergantung pada DBMS Anda, mana yang paling nyaman Anda gunakan, dan mungkin juga apakah organisasi Anda memiliki konvensi pengkodean yang menentukan mana yang harus digunakan.
Tabel Sumber
Bayangkan database kami berisi tabel berikut. Ini adalah tabel yang akan kita gunakan untuk contoh di halaman ini.
SELECT * FROM Owners;
Hasil:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | | 6 | Burt | Tyson | (309) 565-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Contoh
Jika kami ingin mengembalikan daftar semua pemilik yang tidak memiliki OwnerId
dari 3
, kita bisa melakukan ini:
SELECT *
FROM Owners
WHERE OwnerId != 3;
Hasil:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | | 6 | Burt | Tyson | (309) 565-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Kueri kami menggunakan operator yang tidak sama dengan (!=
) untuk menguji apakah OwnerId
kolom tidak sama dengan 3
. Kueri mengembalikan semua pemilik kecuali pemilik nomor 3.
String
Saat membandingkan dengan nilai string, gunakan tanda kutip di sekitar string. Misalnya, jika kita ingin mendapatkan informasi tentang semua pemilik yang nama depannya bukan Homer, kita bisa melakukan hal berikut:
SELECT *
FROM Owners
WHERE FirstName != 'Homer';
Hasil:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | | 6 | Burt | Tyson | (309) 565-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Beberapa Kondisi
Jika Anda memiliki beberapa kondisi, Anda dapat menggunakan beberapa operator (baik operator yang sama atau berbeda).
Seperti ini:
SELECT * FROM Owners
WHERE OwnerId != 1 AND OwnerId != 3;
Hasil:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | | 6 | Burt | Tyson | (309) 565-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Setelah Anda mulai menggunakan lebih banyak kondisi, Anda harus menggunakan tanda kurung untuk mengapit kondisi yang ingin Anda evaluasi terlebih dahulu. Jika Anda tidak melakukan ini, Anda mungkin menemukan bahwa Anda mendapatkan hasil yang tidak diharapkan, karena kondisi yang dievaluasi dalam urutan yang tidak Anda inginkan.
Meniadakan Kondisi
Jika Anda menggunakan NOT
operator untuk meniadakan kondisi yang diberikan oleh tidak sama dengan operator, Anda akan mendapatkan hasil yang sama (=
) operator:
SELECT *
FROM Owners
WHERE NOT FirstName != 'Homer';
Hasil:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Dalam hal ini, Anda lebih baik hanya menggunakan yang sama (=
) operator, seperti ini:
SELECT *
FROM Owners
WHERE FirstName = 'Homer';
Tentu saja, ini sendiri dapat dinegasikan dengan NOT
operator, yang kemudian akan memberi kita hasil yang sama dengan yang tidak sama dengan (!=
) operator memberi kami:
SELECT *
FROM Owners
WHERE NOT FirstName = 'Homer';
Nilai NULL
Anda mungkin telah memperhatikan bahwa tabel sampel asli kami berisi beberapa NULL
nilai dalam Email
kolom.
Kolom yang berisi NULL
berarti tidak ada nilainya. Ini berbeda dengan 0
atau false
, atau bahkan string kosong.
Anda tidak dapat menggunakan operator yang tidak sama dengan untuk membandingkan dengan NULL
. Sebenarnya, ini mungkin tergantung pada DBMS Anda dan konfigurasinya. Tapi untuk sekarang, mari kita lihat apa yang terjadi jika saya mencoba membandingkan Email
kolom ke NULL
.
SELECT * FROM Owners
WHERE Email != NULL;
Hasil:
(0 rows affected)
Cara menguji non-NULL
nilainya adalah menggunakan IS NOT NULL
.
Oleh karena itu, kita perlu menulis ulang pernyataan di atas sebagai berikut.
SELECT * FROM Owners
WHERE Email IS NOT NULL;
Hasil:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | | 6 | Burt | Tyson | (309) 565-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Sekarang kita hanya mendapatkan baris yang bukan NULL
di Email
kolom.
Jika Anda tertarik, lihat SQL Server ANSI_NULLS Explained
untuk melihat bagaimana Anda dapat mengubah cara NULL
nilai diperlakukan di SQL Server.