В этом учебном пособии описаны все операторы сравнения, используемые для проверки равенства и неравенства, а также более продвинутые операторы.
Описание
Операторы сравнения используются в предложении WHERE, чтобы определить, какие записи выбрать. Вот список операторов сравнения, которые вы можете использовать в MySQL:
Операторы сравнения | Описание |
---|---|
= | Равно |
<=> | Равно (безопасное сравнение значения NULL) |
<>, != | Не равно |
> | Больше, чем |
>= | Больше или равно |
< | Меньше, чем |
<= | Меньше или равно |
IN ( ) | Соответствует значению в списке |
NOT | Отрицает условие |
BETWEEN | В пределах диапазона (включительно) |
IS NULL | Значение NULL |
IS NOT NULL | Значение, не NULL |
LIKE | Соответствие шаблону % и _ |
EXISTS | Условие выполняется, если подзапрос возвращает хотя бы одну строку |
Рассмотрим примеры операторов сравнения, которые вы можете использовать в MySQL.
Пример оператора равенства
В MySQL вы можете использовать оператор = для проверки равенства в запросе. Оператор <=> может проверять только равенство со значениями, которые не являются NULL.
Например:
1 2 3 |
SELECT * FROM contacts WHERE last_name = 'Bernard'; |
В этом примере оператора SELECT, возвращает все строки из таблицы contacts, где last_name равно Bernard.
Пример оператора равенства (безопасный с нулевыми значениями)
Поскольку оператор = только сравнивает значения, отличные от NULL, использовать значения NULL небезопасно. Чтобы преодолеть это ограничение, MySQL добавил оператор<=>, чтобы вы могли проверить равенство как со значениями NULL, так и с не NULL значениями.
Чтобы лучше объяснить разницу между оператором = и оператором <=>, мы будем включать некоторые примеры как с запросами, так и с данными.
Предполагая, что у нас в MySQL есть таблица, называемая contacts, которая заполнена следующими данными:
contact_id | last_name | site1 | site2 |
---|---|---|---|
1 | Arnold | alexa.com | |
2 | Gypsie | ||
3 | Boyson | bing.com | bing.com |
4 | Juan | google.ru | google.com |
Мы могли бы использовать оператор = в следующем запросе:
1 2 3 |
SELECT * FROM contacts WHERE site1 = site2; |
Получим следующий результат:
contact_id | last_name | site1 | site2 |
---|---|---|---|
3 | Boyson | bing.com | bing.com |
В вышеприведенном примере оператор SELECT возвращает все строки из таблицы contacts, где site1 равен site2. Он не возвращает вторую запись, в которой значения site1 и site2 имеют значения NULL.
Теперь давайте посмотрим, что произойдет, когда мы перепишем наш запрос с помощью оператора <=>, который безопасен для использования со значениями NULL:
1 2 3 |
SELECT * FROM contacts WHERE site1 <=> site2; |
Поскольку мы используем оператор <=>, мы получим следующий результат:
contact_id | last_name | site1 | site2 |
---|---|---|---|
2 | Gypsie | ||
3 | Boyson | bing.com | bing.com |
Теперь наш запрос возвращает все строки из таблицы contacts, где site1 равен site2, включая те записи, где site1 и site2 имеют значения NULL.
Пример оператора неравенства
В MySQL вы можете использовать операторы <> или !=. Для проверки неравенства в запросе.
Например, мы могли бы проверить неравенство с помощью оператора <> следующим образом:
1 2 3 |
SELECT * FROM contacts WHERE last_name <> 'Bernard'; |
В этом примере оператор SELECT вернет все строки из таблицы contacts, где last_name не равно Bernard.
Или вы также можете написать этот запрос с помощью оператора != следующим образом:
1 2 3 |
SELECT * FROM contacts WHERE last_name != 'Bernard'; |
Оба этих запроса возвратят одинаковые результаты.
Пример оператора >
Вы можете использовать оператор > в MySQL для проверки выражения «более чем».
1 2 3 |
SELECT * FROM contacts WHERE contact_id > 20; |
В этом примере оператор SELECT будет возвращать все строки из таблицы contacts, где contact_id больше 20. В набор результатов не будет включен contact_id, равный 20.
Пример оператора >=
В MySQL вы можете использовать оператор >= для проверки выражения, «больше или равно».
1 2 3 |
SELECT * FROM contacts WHERE contact_id >= 20; |
В этом примере оператор SELECT вернет все строки из таблицы contacts, где contact_id больше или равен 20. В этом случае contact_id равный 20, будет включен в результирующий набор.
Пример оператора <
Вы можете использовать оператор < в MySQL для проверки выражения «меньше чем».
1 2 3 |
SELECT * FROM contacts WHERE contact_id < 150; |
В этом примере оператор SELECT вернет все строки из таблицы contacts, где contact_id меньше 150. contact_id равный 150, не будет включен в результирующий набор.
Пример оператора <=
В MySQL вы можете использовать оператор <= для проверки выражения, которое «меньше или равно».
1 2 3 |
SELECT * FROM contacts WHERE contact_id <= 150; |
В этом примере оператор SELECT вернет все строки из таблицы contacts, где contact_id меньше или равно 150. В этом случае product_id, равный 150, будет включен в результирующий набор.