Не равно (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
Операторы SQL используются для указания сравнений между выражениями.
Можно использовать различные типы операторов SQL.
«COSTS».»UNIT_COST» BETWEEN 100.0 AND 5000.0
Определяет, находится ли значение в диапазоне между двумя неинклюзивными ограничениями.
Оператору BETWEEN может предшествовать оператор NOT , отрицающий это условие.
BETWEEN [LowerBound] AND [UpperBound]
«COSTS».»UNIT_COST» IN(200, 600, ‘A’)
Определяет, присутствует ли значение в заданном наборе значений.
IN ([Comma Separated List])
«PRODUCTS».»PROD_NAME» IS NULL
Определяет, является ли значение пустым (null).
«PRODUCTS».»PROD_NAME» LIKE ‘prod%’
Определяет, совпадает ли значение со всей строкой или частью строки. Часто используется со знаками подстановки для указания совпадения с любой строкой, содержащей ноль или более символов (%), а также для указания совпадения с любым одиночным символом (_).
(FEDERAL_REVENUE + LOCAL_REVENUE) — TOTAL_EXPENDITURE
Знак сложения «плюс».
(FEDERAL_REVENUE + LOCAL_REVENUE) — TOTAL_EXPENDITURE
Знак вычитания «минус».
Операторы сравнения MySQL
Операторы сравнения используются в предложении WHERE, чтобы определить, какие записи выбрать. Вот список операторов сравнения, которые вы можете использовать в MySQL:
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 |
Мы могли бы использовать оператор = в следующем запросе:
