عملگرها (Operators)
در PostgreSQL، «عملگر (Operator)» نماد مقایسه یا جستجو است. با آن در شرط WHERE رکوردها را فیلتر می کنیم. در این صفحه با عملگرهای PostgreSQL آشنا می شویم و هرکدام را با مثال ساده می بینیم.
برابر (=)
وقتی مقدار ستون باید دقیقاً برابر یک مقدار باشد، از = استفاده کن.
SELECT *
FROM cars;
WHERE brand = 'Volvo';
کوچک تر (<)
وقتی مقدار ستون باید کمتر از یک عدد باشد، از < استفاده کن.
SELECT *
FROM cars;
WHERE year < 1975;
بزرگ تر (>)
وقتی مقدار ستون باید بزرگ تر از یک عدد باشد، از > استفاده کن.
SELECT *
FROM cars;
WHERE year > 1975;
کوچک تر یا برابر (<=)
وقتی مقدار ستون باید ≤ عدد هدف باشد، از <= استفاده کن.
SELECT *
FROM cars;
WHERE year <= 1975;
بزرگ تر یا برابر (>=)
وقتی مقدار ستون باید ≥ عدد هدف باشد، از >= استفاده کن.
SELECT *
FROM cars;
WHERE year >= 1975;
نابرابر (<> ، !=)
برای «مساوی نبودن» می توانی از <> یا != استفاده کنی.
SELECT *
FROM cars;
WHERE brand <> 'Volvo';
SELECT *
FROM cars;
WHERE brand != 'Volvo';
LIKE و ILIKE
LIKE تطبیق الگو است. «الگو (Pattern)» رشته با وایلدکارت است. % یعنی صفر تا چند کاراکتر. _ یعنی دقیقاً یک کاراکتر. LIKE حساس به حروف است. ILIKE حساس نیست.
SELECT *
FROM cars;
WHERE model LIKE 'M%';
SELECT *
FROM cars;
WHERE model ILIKE 'm%';
نکته: LIKE حروف بزرگ و کوچک را فرق می گذارد. ILIKE فرق نمی گذارد.
AND و OR
با AND باید هر دو شرط درست باشند. با OR یکی کافی است. مثل امتحان: «هم ریاضی 20» AND «علوم 20». یا «ریاضی 20» OR «علوم 20».
SELECT *
FROM cars;
WHERE brand = 'Volvo'
AND year = 1968;
SELECT *
FROM cars;
WHERE brand = 'Volvo'
OR year = 1975;
IN
اگر مقدار ستون باید داخل یک «فهرست» باشد، از IN استفاده کن.
SELECT *
FROM cars;
WHERE brand IN ('Volvo', 'Mercedes', 'Ford');
BETWEEN
برای بازه بسته از BETWEEN استفاده کن. دو سر بازه هم حساب می شوند.
SELECT *
FROM cars;
WHERE year BETWEEN 1970 AND 1980;
نکته: در مثال بالا، سال های 1970 و 1980 هم برمی گردند.
IS NULL
برای چک کردن تهی بودن مقدار از IS NULL استفاده کن.
SELECT *
FROM cars;
WHERE model IS NULL;
NOT و وارونگی
با NOT نتیجه عملگرها را برعکس کن. روی LIKE، ILIKE، IN، BETWEEN و NULL کاربرد دارد.
NOT LIKE
SELECT *
FROM cars;
WHERE brand
NOT LIKE 'B%';
NOT ILIKE
SELECT *
FROM cars;
WHERE brand
NOT ILIKE 'b%';
NOT IN
SELECT *
FROM cars;
WHERE brand
NOT IN ('Volvo', 'Mercedes', 'Ford');
NOT BETWEEN
SELECT *
FROM cars;
WHERE year
NOT BETWEEN 1970 AND 1980;
نکته: در NOT BETWEEN دو سر بازه حذف می شوند.
IS NOT NULL
SELECT *
FROM cars;
WHERE model IS NOT NULL;
عملگرهای PostgreSQL در کوئری های انتخاب بسیار کاربردی هستند.
جمع بندی سریع
- = ، < ، > برای مقایسه مستقیم هستند.
- LIKE حساس است؛ ILIKE حساس نیست.
- IN فهرست می پذیرد؛ BETWEEN بازه بسته است.
- IS NULL تهی بودن را چک می کند.
- NOT همه چیز را برعکس می کند.