Operator sama dengan (=
) mungkin adalah operator yang paling umum digunakan dalam SQL. Ini membandingkan kesetaraan dua ekspresi. Bahkan jika Anda baru saja memulai perjalanan SQL, Anda mungkin mengenal operator ini.
Tabel Sumber
Bayangkan database kami berisi tabel berikut. Ini adalah tabel yang akan kita gunakan untuk contoh di halaman ini.
SELECT * FROM Pets;
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+ (8 rows affected)
Contoh
Jika kita ingin mendapatkan semua hewan peliharaan dengan pemilik tertentu, kita bisa melakukan ini:
SELECT *
FROM Pets
WHERE OwnerId = 3;
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 4 | 3 | 3 | Wag | 2020-03-15 | +---------+-------------+-----------+-----------+------------+
Kueri kami menggunakan operator yang sama (=
) untuk membandingkan kesetaraan nilai OwnerId
kolom dan 3
.
Dalam hal ini, pemilik nomor 3 memiliki 3 hewan peliharaan.
String
Saat membandingkan dengan nilai string, gunakan tanda kutip di sekitar string. Misalnya, jika kita ingin mendapatkan informasi tentang semua hewan peliharaan bernama Fluffy, kita dapat melakukan hal berikut:
SELECT *
FROM Pets
WHERE PetName = 'Fluffy';
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
Kueri kami menggunakan operator yang sama (=
) untuk membandingkan kesetaraan nilai PetName
kolom dan string Fluffy
.
Dalam kasus kami, kami dapat melihat bahwa hotel hewan peliharaan saat ini memiliki dua hewan peliharaan bernama Fluffy.
Beberapa Kondisi
Jika Anda memiliki beberapa kondisi, Anda dapat menggunakan beberapa operator yang sama.
Seperti ini:
SELECT * FROM Pets
WHERE PetName = 'Fluffy' OR PetName = 'Tweet';
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
Kita dapat melihat bahwa ia mengembalikan baris di mana PetName
kolom adalah Fluffy
atau Tweet
.
Meniadakan Kondisi
Anda dapat menggunakan NOT
operator untuk meniadakan kondisi yang disediakan oleh operator yang sama. Ini contohnya:
SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';
Hasil:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+
Cara alternatif untuk melakukan ini adalah dengan menggunakan operator yang tidak sama dengan, yaitu <>
atau !=
(atau keduanya) tergantung pada DBMS Anda.
Nilai NULL
Anda mungkin telah memperhatikan bahwa tabel sampel asli kami berisi beberapa NULL
nilai di kolom DOB.
Kolom yang berisi NULL
berarti tidak ada nilainya. Ini berbeda dengan 0
atau false
, atau bahkan string kosong.
Anda tidak dapat menggunakan operator yang sama 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 kolom DOB dengan NULL
.
SELECT * FROM Pets
WHERE DOB = NULL;
Hasil:
(0 rows affected)
Cara menguji NULL
adalah menggunakan IS
.
Oleh karena itu, kita perlu menulis ulang pernyataan di atas sebagai berikut.
SELECT * FROM Pets
WHERE DOB IS NULL;
Hasil:
+---------+-------------+-----------+-----------+-------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+-------| | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+-------+
NULL
nilai bisa menjadi hal yang sulit bagi pemula untuk memahaminya. Sebenarnya, mereka bisa menjadi hal yang sulit bagi pengembang berpengalaman untuk memahaminya! Dalam SQL, NULL
memiliki arti yang sedikit berbeda dengan NULL
di sebagian besar bahasa pemrograman lainnya.
Tetapi yang penting untuk diingat adalah, dalam SQL, NULL
berarti tidak adanya nilai. Tidak ada nilai. Oleh karena itu, kita tidak bisa mengatakan bahwa itu sama atau tidak sama dengan sesuatu yang lain, karena tidak ada nilai untuk memulainya.
Jika Anda tertarik, lihat SQL Server ANSI_NULLS Explained
untuk melihat bagaimana Anda dapat mengubah cara NULL
nilai diperlakukan di SQL Server.