Not sql: NOT (Transact-SQL) — SQL Server

NOT (Transact-SQL) — SQL Server

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Область применения: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)

Инвертирует входное логическое значение.

Синтаксические обозначения в Transact-SQL

Синтаксис

[ NOT ] boolean_expression  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

boolean_expression
Любое допустимое логическое выражение.

Типы результата

Boolean

Значение результата

Оператор NOT изменяет значение любого логического выражения на противоположное.

Использование оператора NOT инвертирует выражение.

В следующей таблице показаны результаты сравнения значений TRUE и FALSE при использовании оператора NOT.

NOT
TRUEFALSE
FALSETRUE
UNKNOWNUNKNOWN

Примеры

В следующем примере производится поиск всех велосипедов серебристого цвета по цене не выше 400 долларов США.

-- Uses AdventureWorks  
  
SELECT ProductID, Name, Color, StandardCost  
FROM Production.Product  
WHERE ProductNumber LIKE 'BK-%' AND Color = 'Silver' AND NOT StandardCost > 400;  
GO  

Результирующий набор:

ProductID   Name                     Color         StandardCost
---------   -------------------      ------      ------------
984         Mountain-500 Silver, 40  Silver        308.2179
985         Mountain-500 Silver, 42  Silver        308.2179
986         Mountain-500 Silver, 44  Silver        308.2179
987         Mountain-500 Silver, 48  Silver        308.2179
988         Mountain-500 Silver, 52  Silver        308.2179
(6 row(s) affected)

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

Следующий пример ограничивает результаты для SalesOrderNumber значениями, начиная с SO6, и ProductKeys, больше или равными 400.

-- Uses AdventureWorks  
  
SELECT ProductKey, CustomerKey, OrderDateKey, ShipDateKey  
FROM FactInternetSales  
WHERE SalesOrderNumber LIKE 'SO6%' AND NOT ProductKey < 400;  

См.

также:

Выражения (Transact-SQL)
Встроенные функции (Transact-SQL)
Операторы (Transact-SQL)
SELECT (Transact-SQL)
Предложение WHERE (Transact-SQL)

Оператор SQL NOT: примеры, синтаксис

Оператор SQL NOT служит для задания противоположно заданного условия. Является эквивалентом операции инверсии в математической логике и может применяется только для булевых значений.

Оператор SQL NOT имеет следующий синтаксис:

[ NOT ] boolean_expression

Примеры оператора SQL NOT. Имеется следующая таблица Artists:

SingerAlbumYearSale
The ProdigyInvaders Must Die20081200000
Drowning PoolSinner2001400000
Massive AttackMezzanine19982300000
The ProdigyFat of the Land1997600000
The ProdigyMusic For The Jilted Generation19941500000
Massive Attack100th Window20031200000
Drowning PoolFull Circle2007800000
Massive AttackDanny The Dog20041900000
Drowning PoolResilience2013500000

Пример 1. Используя оператор SQL NOT вывести записи таблицы, без исполнителя Drowning Pool и Massive Attack:

SELECT * FROM Artists WHERE Singer NOT IN ('Drowning Pool', 'Massive Attack')

Результат:

SingerAlbumYearSale
The ProdigyInvaders Must Die20081200000
The ProdigyFat of the Land1997600000
The ProdigyMusic For The Jilted Generation19941500000

Очевидно, что в нашем случае, с такой небольшой таблицей удобней было бы использовать запрос:

SELECT * FROM Artists WHERE Singer = "The Prodigy"

Однако, в случае огромных таблиц с тысячами записей где надо получить выборку исключающего множества, оператор SQL NOT подходит как нельзя лучше.

Пример 2. Вывести записи таблицы, в которых название альбома содержит одно слово:

SELECT * FROM Artists WHERE Album NOT LIKE "% %"

Результат:

SingerAlbumYearSale
Drowning PoolSinner2001400000
Massive AttackMezzanine19982300000
Drowning PoolResilience2013500000

Введение в оператор SQL Not Equal с примерами

Оператор сравнения — это зарезервированное слово, используемое в предложении SQL WHERE для сравнения двух элементов. Эти операторы используются для перечисления условий в операторе SQL и в качестве конъюнкций для нескольких условий в операторе. Одним из таких операторов является SQL Not Equal, о котором мы поговорим в этой статье.

В этой статье мы рассмотрим следующие темы.

  • Оператор SQL Not Equal
  • Возвращаемое значение SQL не равно
  • Пример 1 
  • Пример 2 
  • Пример 3
  • Пример 4

Оператор SQL не равен: !=

Если оба выражения SQL не равны, этот оператор возвращает 1, а если они равны, он возвращает 0, а когда любое из выражений имеет значение NULL, он возвращает NULL. Когда выражения возвращают данные разных типов (например, строку и число), выполняется преобразование типов.

Оператор сравнения SQL Not Equal (!=) используется для сравнения двух выражений. Например, операция сравнения 15 != 17 использует оператор SQL Not Equal (!=) между двумя выражениями 15 и 17. 

Примечание: «!=» и «<>» дают одинаковые результаты.

Пример:

SELECT * FROM customers WHERE name <> ‘Joe’

или

SELECT * FROM customers WHERE name != ‘Джо’

Приведенный выше запрос выдаст все результаты, где имя не равно Joe.

Оба запроса дадут одинаковый результат.

Возвращаемое значение SQL не равно

SQL Not Equal — логическое выражение. Он может возвращать либо True (если одно выражение не равно другому), либо False (если выражения равны).

Пример:

1 != 2 ——> Истинно

3 != 3 ——> Ложь

Пример 1: Получить все сведения о клиенте, кроме customer_id 1

Приведенный выше код исключит детали customer_id 1.

Пример 2: Получить список всех клиентов, кроме одного конкретного клиента

В приведенном выше примере будут исключены сведения о покупателе по имени Элка.

Пример 3: указание нескольких условий с помощью SQL Not Operator

Мы можем указать несколько условий для оператора Not, используя предложение WHERE.

Приведенный выше оператор даст следующие результаты.

Пример 4: Оператор SQL Not и предложение SQL Group By

Оператор SQL Not также можно использовать с комбинацией предложения GROUP BY и HAVING следующим образом:

Город, сумма баллов которого равна 3220, исключается из результатов.

Получите опыт работы с новейшими инструментами и методами бизнес-аналитики с помощью программы последипломного образования в области бизнес-анализа. Зарегистрируйтесь сейчас!

Заключение

Благодаря этой статье вы получили четкое представление об операторе SQL Not equal, а также привели соответствующие примеры. Оператор равенства повышает производительность SQL-запроса.

Если вы хотите узнать больше об SQL, ознакомьтесь с нашим сертификационным курсом по SQL.

Пройдя этот сертификационный курс по SQL, вы получите все необходимое для работы с базами данных SQL и использования их в своих приложениях. От правильного структурирования вашей базы данных до создания эффективных операторов и предложений SQL и управления вашей базой данных SQL для масштабируемого роста — получите отличное готовое к работе обучение по SQL и множеству его приложений в работе.

Если у вас есть какие-либо вопросы, задавайте их в разделе комментариев, и наши специалисты оперативно ответят на них.

Использование операторов IN, NOT и LIKE в SQL

                

SQL становится сложным, когда у вас есть несколько бизнес-правил, которые управляют возвратом наборов записей. Как программист, вы собираете бизнес-правила, которые затем определяют, как структурировать операторы SQL, чтобы гарантировать точность возвращаемых результатов для отчетов и приложений. Эти операторы становятся сложными, когда у вас есть несколько бизнес-требований, которые необходимо использовать для возврата набора данных, который помогает компаниям принимать решения. Некоторые ключевые слова SQL, помогающие создавать сложные операторы, включают IN, NOT и LIKE. LIKE использует подстановочные знаки, которые используются для запроса похожих значений, но IN и NOT возвращают точные наборы записей на основе конкретных значений.

Условие IN

Условие IN позволяет вам установить список значений, которые должны соответствовать значениям в ваших таблицах. Условие IN перечисляет значения в скобках, и это лучше, чем работать с несколькими условиями OR. Вот примерная таблица.

идентификатор клиента

Имя

Фамилия

Город

Состояние

321

Фрэнк

Лоэ

Даллас

ТХ

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г.А.

457

Джо

Смит

Майами

FL

458

Фрэнк

Доу

Даллас

ТХ

Предположим, вы хотите вернуть значения для клиентов, которые находятся только в Атланте и Майами. Вы можете написать оператор ИЛИ, который выглядит следующим образом.

ВЫБЕРИТЕ * ОТ Заказчика

ГДЕ Город = «Майами» ИЛИ Город = «Атланта»

Представьте, что вам нужно найти 10 таких городов. Оператор OR становится длинным и сложным. Вы можете объединить эти операторы ИЛИ в оператор IN. Следующий оператор SQL делает то же самое, что и приведенный выше оператор.

SELECT * FROM Customer

WHERE City IN («Майами», «Атланта»)

Результат обоих операторов одинаков. Следующий результат отображается SQL.

идентификатор клиента

Имя

Фамилия

Город

Состояние

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г. А.

457

Джо

Смит

Майами

FL

Пункт НЕ

Вы можете вернуть 1000 записей, но хотите исключить некоторые записи из набора данных. До сих пор мы создавали только операторы SQL, в которые вы хотите включать записи. Иногда вам нужно исключить записи из ваших результатов. Предположим, вы хотите включить записи со значениями городов Атланта и Майами, но хотите исключить записи, в которых имя пользователя — Джо. В SQL есть оператор НЕ, который исключает эти записи, но при этом включает другие, соответствующие исходному запросу IN. Следующий запрос дает вам пример оператора NOT.

ВЫБЕРИТЕ * ОТ Клиента

ГДЕ Город В (‘Майами’, ‘Атланта’) И Имя НЕ В (‘Джо’) 

В приведенном выше заявлении говорится: «Дайте мне все записи, которые имеют значения городов Майами и Атланты, но исключают любой из этих записей, в которых есть имя Джо». Результирующий набор записей выглядит следующим образом.

идентификатор клиента

Имя

Фамилия

Город

Состояние

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г.А.

Обратите внимание, что результаты похожи на запрос для оператора IN. Единственное отличие состоит в том, что исключается запись «Джо». Поскольку «Джо» соответствует оператору NOT, он исключен из результатов. Этот оператор основан на логике И. Поскольку используется И, результирующий набор должен соответствовать обоим условиям со значением true, чтобы быть включенным в результаты.

Язык SQL позволяет комбинировать NOT и LIKE для устранения результатов поиска, используя логику того же типа, за исключением того, что записи удаляются из набора данных, а не добавляются. Например, вместо поиска клиентов в городах, названия которых начинаются с «Да», вы можете исключить клиентов, расположенных в этих городах. Следующая инструкция SQL использует ключевое слово NOT с ключевым словом LIKE.

SELECT * FROM Customer

WHERE City NOT LIKE ‘da%’ 

Результатом являются следующие результаты данных.

идентификатор клиента

Имя

Фамилия

Город

Состояние

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г. А.

457

Джо

Смит

Майами

FL

Оператор NOT работает со всеми вашими ключевыми словами SQL, чтобы отрицать результаты. Думайте об операторе NOT как об отменяющей фразе. При использовании оператора IN язык SQL сначала получает все совпадающие значения. В данном случае параметрами являются любые записи, начинающиеся с символов «да». Затем SQL видит оператор NOT и исключает результаты. Вы можете комбинировать оператор NOT с другими фразами.

Например, предположим, что вы хотите получить все записи, начинающиеся с «да», но хотите исключить все записи, начинающиеся с «дал». Следующая инструкция SQL исключит из ваших результатов города «дал».

SELECT * FROM Customer

ГДЕ City LIKE ‘da%’ AND City NOT LIKE ‘dal%’ 

Обратите внимание на оператор AND в приведенном выше выражении. Если вместо этого вы поместите OR в свое заявление, вы снова получите всех клиентов, находящихся где угодно. С помощью оператора AND вы указываете SQL выдавать только те результаты, которые возвращают true для обеих фраз. Таким образом, значения должны иметь «да» в качестве первых двух символов, но SQL также исключает все города, которые начинаются с «дал». В этом примере не возвращаются никакие записи, поскольку все записи не соответствуют обеим фразам.

Предположим, вы поместили в оператор оператор ИЛИ вместо оператора И. В следующем операторе используется ИЛИ вместо И.

SELECT * FROM Customer

WHERE City LIKE ‘da%’ OR City NOT LIKE ‘dal%’ 

Условие ИЛИ изменит ваш оператор SQL на «возврат всех записей, начинающихся с ‘da’ ИЛИ ​​записей, которые не начинай с «дал». Эта логика немного сложнее. В результате возвращаются все записи с «da», что означает, что возвращаются ваши клиенты «dallas». Затем вторая фраза указывает SQL вернуть все записи, которые не начинаются с «dal». В таблице вашего примера все записи не начинаются с символов «даль», поэтому SQL возвращает все записи. Первая фраза не имеет значения, потому что используется ИЛИ, и все ваши записи соответствуют второй фразе.

В результате SQL возвращает следующий набор данных.

идентификатор клиента

Имя

Фамилия

Город

Состояние

321

Фрэнк

Лоэ

Даллас

ТХ

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г.А.

457

Джо

Смит

Майами

FL

458

Фрэнк

Доу

Даллас

ТХ

Понимание разницы между операторами ИЛИ и И и их использование с оператором НЕ поможет вам создавать сложные операторы SQL, которые дают вам точный набор данных, который вам нужен для отображения в ваших приложениях и создания отчетов.

Оператор LIKE

Оператор LIKE уже немного обсуждался, но оператор LIKE имеет несколько других вариантов синтаксиса, которые вы можете использовать. Оператор LIKE использует подстановочный знак %. Символ % может быть помещен в начало, конец или внутри строкового значения. Обратите внимание, что оператор % предназначен для строковых или varchar-значений.

В приведенных выше примерах используется символ процента для возврата значений, начинающихся с определенной строки (в приведенных выше примерах строка была «da»). Что делать, если вам нужно найти значения, которые просто содержат значение? Например, вы можете захотеть вернуть всех клиентов, которые содержат только строку «ia». Опять же, мы начинаем с таблицы базы данных клиентов.

идентификатор клиента

Имя

Фамилия

Город

Состояние

321

Фрэнк

Лоэ

Даллас

ТХ

455

Эд

Томпсон

Атланта

Г. А.

456

Эд

Томпсон

Атланта

Г.А.

457

Джо

Смит

Майами

ФЗ

458

Фрэнк

Доу

Даллас

ТХ

Следующая инструкция SQL ищет любого клиента в городе, который содержит значение «ia».

ВЫБЕРИТЕ * ОТ Заказчика

WHERE City LIKE ‘%ia%’

Приведенное выше утверждение переводится как «дайте мне все записи, в которых значение города содержит значение «ia» в любом месте строки. Обратите внимание на символ процента в начале и в конце. Это отличается от предыдущих примеров, в которых использовалось только «da%.» «da%» сообщает SQL, что строка должна начинаться с «da» и не может включать никаких префиксных символов. Оператор «%ia%» сообщает SQL, что « ia» могут находиться в любом месте строки.

Результат набора данных следующий. 

идентификатор клиента

Имя

Фамилия

Город

Состояние

457

Джо

Смит

Майами

FL

Символ подчеркивания (_) — это еще один подстановочный знак, используемый для указания SQL, что только один символ может иметь префикс или заканчиваться определенной строковой последовательностью. Например, следующая инструкция SQL возвращает только те записи, в которых перед «iami» есть один символ.

ВЫБЕРИТЕ * ОТ Заказчика

ГДЕ Город НРАВИТСЯ ‘_iami’

Разница между символом процента и символом подчеркивания заключается в том, что символ процента сообщает SQL, что любое количество символов может предшествовать заданной последовательности или следовать за ней, а символ подчеркивания означает, что только один символ может предшествовать или следовать за последовательностью.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *