Не равно (Transact SQL) — традиционный оператор
Сравнивает два выражения (оператор сравнения). При сравнении ненулевых выражений результат принимает значение TRUE, если левый операнд не равен правому, в противном случае результат принимает значение FALSE. Если один или оба операнда имеют значение NULL, см. раздел SET ANSI_NULLS (Transact-SQL).
Синтаксис
expression <> expression
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
выражение
Любое допустимое выражение expression. Оба выражения должны иметь типы данных, допускающие неявное преобразование. Преобразование зависит от правил приоритетов типов данных.
Типы результата
Boolean
Примеры
А. Использование <> в простом запросе
В следующем примере возвращаются все строки из таблицы Production.ProductCategory , которые содержат значение в ProductCategoryID , равное 3 или 2.
-- Uses AdventureWorks SELECT ProductCategoryID, Name FROM Production.ProductCategory WHERE ProductCategoryID <> 3 AND ProductCategoryID <> 2;
ProductCategoryID Name ----------------- -------------------------------------------------- 1 Bikes 4 Accessories (2 row(s) affected)
SELECT — операторы сравнения, логические и специальные.
На предыдущем шаге мы использовали оператор равенства = в предложении WHERE для выбора записей из таблиц. Transact-SQL позволяет строить сложные условия отбора записей и для этого предоставляет операторы отношения, логические операторы и специальные операторы. Операторы отношения это:
- = Равно
- > Больше чем
- Меньше чем
- >= Больше или равно
- Меньше или равно
- Не равно
Предположим, что нам надо увидеть всех заказчиков в рейтингом выше 200:
SELECT * FROM Customers WHERE rating > 200
Результат таков:
CNUM CNAME CITY RATING SNUM ----- --------------------------------- ---------- ------- ----- 2004 Концерн "Дети лейтенанта Шмидта" Бобруйск 300 1002 2008 ОАО "Валют-транзит" Караганда 300 1007
- AND логическое «И»
- OR логическое «ИЛИ»
- NOT логическое отрицание
Использование логических операторов значительно увеличивает возможности команды SELECT. Например, для просмотра заказчиков из Караганды, которые имеют рейтинг выше 200 достаточно команды:
SELECT * FROM Customers WHERE city = 'Караганда' AND rating > 200
В нашей БД имеется только один заказчик, удовлетворяющий этому условию.
CNUM CNAME CITY RATING SNUM ----- --------------------------------- ---------- ------- ----- 2008 ОАО "Валют-транзит" Караганда 300 1007
Если использовать OR, то получим всех заказчиков, находящихся в Караганде или имеющих рейтинг выше 200:
SELECT * FROM Customers WHERE city = 'Караганда' OR rating > 200
Результат запроса:
CNUM CNAME CITY RATING SNUM ----- --------------------------------- ---------- ------- ----- 2004 Концерн "Дети лейтенанта Шмидта" Бобруйск 300 1002 2008 ОАО "Валют-транзит" Караганда 300 1007
NOT используется для инвертирования значений. Запрос:
SELECT * FROM Customers WHERE city = "Караганда" OR NOT rating > 200
CNUM CNAME CITY RATING SNUM ----- -------------------- --------- ------- ------ 2001 ТОО Рога и копыта Москва 100 1001 2002 AО Бендер и К Одесса 200 1003 2003 Фирма ХХХ Рязань 200 1002 2006 Clemens Лондон 100 1001 2007 ОАО "ООО" ТОМСК 100 1004 2008 ОАО "Валют-транзит" Караганда 300 1007
Для группировки выражений Transact-SQL позволяет использовать круглые скобки ( ). Например:
SELECT * FROM Customers WHERE NOT (city = 'Караганда' OR rating > 200)
Этот запрос отбирает заказчиков, которые НЕ находятся в Караганде или НЕ имеют рейтинг больше 200. Результат:
CNUM CNAME CITY RATING SNUM ----- ------------------ ------- ------- ----- 2001 ТОО Рога и копыта Москва 100 1001 2002 AО Бендер и К Одесса 200 1003 2003 Фирма ХХХ Рязань 200 1002 2006 Clemens Лондон 100 1001 2007 ОАО "ООО" ТОМСК 100 1004
Рассмотрим теперь специальные операторы: IN, BETWEEN, LIKE, IS NULL.
Оператор IN определяет список значений, в который должно входить значение поля. Например, если Вы хотите найти всех продавцов находящихся в Москве или Хабаровске, Вы должны использовать такой запрос:
SELECT * FROM Salespeople WHERE city = 'Москва' OR city = 'Хабаровск'
Но есть есть более простой способ:
SELECT * FROM Salespeople WHERE city IN ( 'Москва', 'Хабаровск' )
Результат этого запроса:
SNUM SNAME CITY COMM ----- ------- ---------- ----- 1001 Иванов Москва 12.0 1002 Петров Хабаровск 13.0
Набор значений для оператора IN заключается в круглые скобки, значения разделяются запятыми.
Оператор BETWEEN похож на оператор IN. В отличие от списка допустимых значений BETWEEN определяет диапазон значений. В запросе Вы должны указать слово BETWEEN затем начальное значение, ключевое слово AND и конечное значение. Первое значение должно быть меньше второго. Следующий запрос выберет Агентов с комиссионными между 10 и 12:
SELECT * FROM Salespeople WHERE comm BETWEEN 10 AND 12
SNUM SNAME CITY COMM ----- -------- ---------- ----- 1001 Иванов Москва 12.0 1003 Егоров Караганда 10.0 1004 Сидоров Сочи 11.0
Оператор LIKE применим только к символьным полям, с которыми он используется, чтобы находить подстроки. Т.е. он ищет поле символа, чтобы видеть совпадает ли с условием часть его строки. В качестве условия он использует специальные символы:
- символ подчеркивания _ — замещает любой одиночный символ. Например, ‘к_т’ будет соответствовать ‘кот’ и ‘кит’, но не ‘крот’.
- знак процента % — замещает последовательность любого числа символов. Например, ‘%м%р’ будет соответствовать ‘компьютер’ и ‘омар’.
SELECT * FROM Customers WHERE cname LIKE 'О%'
CNUM CNAME CITY RATING SNUM ----- -------------------- ---------- ------- ----- 2008 ОАО "Валют-транзит" Караганда 300 1007 2007 ОАО "ООО" ТОМСК 100 1004
LIKE удобен поиске значений, если Вы точно не помните как они пишутся. Вы просто можете использовать ту часть, которую помните.
Так как NULL указывает на отсутствие значения Вы не можете знать каков бужет результат любого сравнения с NULL. Часто Вам различать строки, содержащие значения NULL в каком-либо столбце. Для этого существует специальный оператор IS NULL. Выберем из нашей БД заказчиков с NULL значениями в столбце city:
SELECT * FROM Customers WHERE city IS NULL
В БД таких записей нет, но они могут возникнуть при добавлении нового заказчика без прикрепления к нему агента.
Теперь Вы знаете как можно строить запросы к таблицам, используя любые условия. Далее следует: агрегатные функции и просто функции, GROUP BY,ORDER BY.
SQL операторы сравнения
Операторы сравнения используются в предложении WHERE, чтобы определить, какие записи выбрать. Вот список операторов сравнения, которые вы можете использовать в SQL:
| Операторы сравнения | Описание |
|---|---|
| = | Равно |
| <> | Не равно |
| != | Не равно |
| > | Больше чем |
| >= | Больше или равно |
| % и _ | |
| EXISTS | Условие выполнено, если подзапрос возвращает хотя бы одну строку |
Пример — оператор равенства
В SQL вы можете использовать оператор = для проверки на равенство в запросе.
В этом примере у нас есть таблица с suppliers со следующими данными:
| supplier_id | supplier_name | city | state |
|---|---|---|---|
| 100 | Yandex | Moscow | Moscow |
| 200 | Lansing | Michigan | |
| 300 | Oracle | Redwood City | California |
| 400 | Bing | Redmond | Washington |
| 500 | Yahoo | Sunnyvale | Washington |
| 600 | DuckDuckGo | Paoli | Pennsylvania |
| 700 | Qwant | Paris | Ile de France |
| 800 | Menlo Park | California | |
| 900 | Electronic Arts | San Francisco | California |
Введите следующий SQL оператор:
Transact-SQL
FROM suppliers
WHERE supplier_name = ‘Yandex’ ;
| supplier_id | supplier_name | city | state |
|---|---|---|---|
| 100 | Yandex | Moscow | Moscow |
Будет выбрана 1 запись. Вот результаты, которые вы должны получить:
В этом примере приведенный выше оператор SELECT возвращает все строки из таблицы suppliers , где supplier_name равно Yandex.
Пример — оператор неравенства
В SQL есть два способа проверить неравенство в запросе. Вы можете использовать оператор <> или != . Оба вернут одинаковые результаты.
Давайте использовать ту же таблицу suppliers , что и в предыдущем примере.
| supplier_id | supplier_name | city | state |
|---|---|---|---|
| 100 | Yandex | Moscow | Moscow |
| 200 | Lansing | Michigan | |
| 300 | Oracle | Redwood City | California |
| 400 | Bing | Redmond | Washington |
| 500 | Yahoo | Sunnyvale | Washington |
| 600 | DuckDuckGo | Paoli | Pennsylvania |
| 700 | Qwant | Paris | Ile de France |
| 800 | Menlo Park | California | |
| 900 | Electronic Arts | San Francisco | California |
Выполните следующий SQL оператор, чтобы проверить неравенство, используя оператор <> :
Операторы сравнения MySQL
Операторы сравнения используются в предложении WHERE, чтобы определить, какие записи выбрать. Вот список операторов сравнения, которые вы можете использовать в MySQL:
| Операторы сравнения | Описание |
|---|---|
| = | Равно |
| Равно (безопасное сравнение значения NULL) | |
| <>, != | Не равно |
| > | Больше, чем |
| >= | Больше или равно |
| = для проверки равенства в запросе. Оператор может проверять только равенство со значениями, которые не являются NULL. Например: |
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 |
Мы могли бы использовать оператор = в следующем запросе: