В этом учебном пособии описаны все операторы сравнения, используемые для проверки равенства и неравенства, а также более продвинутые операторы.
Описание
Операторы сравнения используются в предложении 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, будет включен в результирующий набор.