Operator perbandingan adalah bagian penting dari sebagian besar bahasa pemrograman.
Operator perbandingan digunakan untuk membandingkan dua ekspresi. Hasilnya adalah true
atau false
. Bisa juga tidak diketahui. Ini juga dapat diwakili oleh 1
, 0
, atau NULL
, tergantung bahasanya. Ini biasanya dikenal sebagai "ekspresi Boolean".
Saat digunakan dengan database, operator perbandingan dapat digunakan di dalam kueri SQL Anda untuk memfilter data ke kriteria tertentu.
Operator Perbandingan Umum
Sebagian besar bahasa pemrograman mendukung operator perbandingan berikut dalam satu atau lain bentuk:
OPERATOR | MAKNA |
---|---|
= | sama dengan |
> | Lebih besar dari |
< | Kurang dari |
>= | Lebih besar dari atau sama dengan |
<= | Kurang dari atau sama dengan |
< | Tidak sama dengan |
SQL menggunakan sintaks yang sama seperti yang tercantum dalam tabel di atas.
Beberapa bahasa menggunakan sintaks yang berbeda untuk menghindari kebingungan dengan operator penugasan. Misalnya, Python dan JavaScript menggunakan ==
bukannya =
. ColdFusion di sisi lain, menggunakan eq
.
Tipe Data Berbeda
Beberapa bahasa memiliki operator khusus untuk menentukan bahwa kedua nilai harus bertipe data yang sama.
Misalnya, JavaScript juga menyertakan ===
operator yang menetapkan bahwa kedua nilai sama dan bahwa mereka harus dari tipe data yang sama. Tetapi jika tipe datanya tidak relevan, gunakan ==
sebagai gantinya.
Contoh
Lebih Besar dari Operator
Berikut adalah contoh penggunaan operator Greater Than dalam kueri T-SQL.
SELECT Name, Population
FROM country
WHERE Population > 100000000
ORDER BY Population DESC;
Hasil:
+--------------------+--------------+ | Name | Population | |--------------------+--------------| | China | 1277558000 | | India | 1013662000 | | United States | 278357000 | | Indonesia | 212107000 | | Brazil | 170115000 | | Pakistan | 156483000 | | Russian Federation | 146934000 | | Bangladesh | 129155000 | | Japan | 126714000 | | Nigeria | 111506000 | +--------------------+--------------+
Dalam contoh ini saya menggunakan operator Greater Than (>
) untuk memilih hanya negara dengan populasi lebih besar dari 100000000.
Operator Setara
Berikut contoh lain, di mana saya menggunakan operator sama dengan (=
) untuk mengembalikan data yang sama persis dengan nilai yang diberikan.
SELECT CountryCode, Name
FROM city
WHERE CountryCode = 'AFG'
Hasil:
+---------------+----------------+ | CountryCode | Name | |---------------+----------------| | AFG | Kabul | | AFG | Qandahar | | AFG | Herat | | AFG | Mazar-e-Sharif | +---------------+----------------+
Dalam hal ini saya hanya mengembalikan kota-kota yang kode negaranya sama dengan AFG
.
Ini menunjukkan bahwa operator perbandingan tidak hanya terbatas pada tipe data numerik.
Tanggal
Anda juga dapat menggunakan operator perbandingan pada tanggal, misalnya:
SELECT * FROM Artists
WHERE ActiveFrom > '1990-01-01';
Hasil:
+------------+----------------+--------------+ | ArtistId | ArtistName | ActiveFrom | |------------+----------------+--------------| | 5 | Devin Townsend | 1993-01-01 | | 8 | Maroon 5 | 1994-01-01 | | 9 | The Script | 2001-01-01 | | 14 | Karnivool | 1997-01-01 | | 15 | Birds of Tokyo | 2004-01-01 | +------------+----------------+--------------+
Seperti yang Anda lihat, satu-satunya hasil yang dikembalikan adalah yang lebih besar dari (setelah) tanggal yang ditentukan.
Lebih Besar dari atau Sama Dengan Operator
Saya dapat menggunakan operator Lebih Besar Dari atau Sama Dengan untuk memasukkan tanggal yang ditentukan dalam hasil.
SELECT * FROM Artists
WHERE ActiveFrom >= '1990-01-01';
Hasil:
+------------+----------------+--------------+ | ArtistId | ArtistName | ActiveFrom | |------------+----------------+--------------| | 5 | Devin Townsend | 1993-01-01 | | 8 | Maroon 5 | 1994-01-01 | | 9 | The Script | 2001-01-01 | | 14 | Karnivool | 1997-01-01 | | 15 | Birds of Tokyo | 2004-01-01 | | 16 | Bodyjar | 1990-01-01 | +------------+----------------+--------------+
Dalam hal ini, satu baris tambahan dikembalikan (baris terakhir).
Kurang Dari Operator
Inilah yang terjadi jika saya mengubah kueri saya untuk menggunakan operator Less Than.
SELECT * FROM Artists
WHERE ActiveFrom < '1990-01-01';
Hasil:
+------------+------------------------+--------------+ | ArtistId | ArtistName | ActiveFrom | |------------+------------------------+--------------| | 1 | Iron Maiden | 1975-12-25 | | 2 | AC/DC | 1973-01-11 | | 3 | Allan Holdsworth | 1969-01-01 | | 4 | Buddy Rich | 1919-01-01 | | 6 | Jim Reeves | 1948-01-01 | | 7 | Tom Jones | 1963-01-01 | | 10 | Lit | 1988-06-26 | | 11 | Black Sabbath | 1968-01-01 | | 12 | Michael Learns to Rock | 1988-03-15 | | 13 | Carabao | 1981-01-01 | +------------+------------------------+--------------+
Saya mendapatkan semua baris yang kurang dari tanggal yang ditentukan.
Membandingkan Nilai NULL
NULL
nilai dapat sedikit memperumit masalah saat menggunakan operator perbandingan. Singkatnya, Anda mungkin mendapatkan hasil yang berbeda, tergantung pada bagaimana lingkungan Anda dikonfigurasi.
Misalnya, di SQL Server, jika Anda menggunakan operator Equals (=
) atau operator Not Equal (<>
) untuk menguji terhadap NULL
, hasil Anda akan bergantung pada ANSI_NULLS
. Anda pengaturan (yaitu apakah itu ON
atau OFF
).
Untuk menguji terhadap NULL
nilai, SQL Server juga menyediakan IS NULL
predikat, yang bekerja secara konsisten, terlepas dari ANSI_NULLS
Anda pengaturan. Ini juga termasuk IS NOT NULL
variasi untuk pengujian terhadap non-NULL
nilai-nilai.
Di bawah ini adalah contoh yang menunjukkan apa yang saya maksud.
ANSI_NULLS ON
Pertama kita set ANSI_NULLS
ke ON
, lalu jalankan beberapa pengujian terhadap NULL
.
SET ANSI_NULLS ON;
SELECT NULL
WHERE NULL = NULL;
SELECT NULL
WHERE 1 = NULL;
SELECT NULL
WHERE NULL IS NULL;
SELECT 'Not NULL'
WHERE 1 IS NOT NULL;
SELECT 'Not NULL'
WHERE 1 <> NULL;
Hasil:
(0 rows affected) (0 rows affected) +--------------------+ | (No column name) | |--------------------| | NULL | +--------------------+ (1 row affected) +--------------------+ | (No column name) | |--------------------| | Not NULL | +--------------------+ (1 row affected) (0 rows affected)
ANSI_NULLS OFF
Sekarang kita set ANSI_NULLS
ke OFF
, lalu jalankan pengujian yang sama.
SET ANSI_NULLS OFF;
SELECT NULL
WHERE NULL = NULL;
SELECT NULL
WHERE 1 = NULL;
SELECT NULL
WHERE NULL IS NULL;
SELECT 'Not NULL'
WHERE 1 IS NOT NULL;
SELECT 'Not NULL'
WHERE 1 <> NULL;
Hasil:
+--------------------+ | (No column name) | |--------------------| | NULL | +--------------------+ (1 row affected) (0 rows affected) +--------------------+ | (No column name) | |--------------------| | NULL | +--------------------+ (1 row affected) +--------------------+ | (No column name) | |--------------------| | Not NULL | +--------------------+ (1 row affected) +--------------------+ | (No column name) | |--------------------| | Not NULL | +--------------------+ (1 row affected)