Перейти к основному содержимому

SQL NOT

Это будет не не полезная страница о полезном операторе SQL.

Хорошо, мы должны были это сказать. Оператор SQL NOT позволяет возвращать результаты из условий, которые не являются истинными. Довольно интуитивно, правда?

На этой странице мы углубимся в то, как использовать оператор NOT, продемонстрируем пример и разберем потенциальные случаи использования.

Как использовать оператор SQL NOT

Булевый оператор NOT похож на прилагательное — его часто ставят перед другим оператором, таким как BETWEEN, LIKE/ILIKE, IS и IN, чтобы вернуть строки, которые не соответствуют указанным критериям. Ниже приведен пример использования NOT перед оператором LIKE:

where <field_name> not like <value>

Этот синтаксис можно легко изменить для других операторов:

  • where not between <value_1> and <value_2>
  • where <field_name> is not null
  • where <field_name> is not in (array_of_options)
  • ...или разместить в другом месте, например, в операторе case (например, case when <field_name> is not null then 1 else 0 end)

Давайте углубимся в практический пример использования оператора NOT.

Пример SQL NOT

select
payment_id,
order_id,
payment_method
from {{ ref('payments') }}
where payment_method not like '%card'

Этот простой запрос, использующий пример набора данных таблицы payments из Jaffle Shop, возвращает все строки, у которых payment_method не является типом карты (например, подарочная карта или кредитная карта):

payment_idorder_idpayment_method
33coupon
44coupon
55bank_transfer
109bank_transfer

Синтаксис SQL NOT в Snowflake, Databricks, BigQuery и Redshift

Snowflake, Databricks, BigQuery и Redshift поддерживают оператор NOT, но могут не поддерживать все вторичные операторы, которые вы обычно используете в паре с оператором NOT. Например, where <field_name> not ilike <pattern> является допустимым в Snowflake, Databricks и Redshift, но оператор ILIKE не поддерживается в BigQuery, поэтому этот пример не будет действителен во всех хранилищах данных.

Примеры использования оператора NOT

Существует множество сценариев, в которых вы можете захотеть использовать операторы NOT в ваших предложениях WHERE или операторах case, но мы часто видим, что операторы NOT используются для удаления null-значений или строк, идентифицированных как удаленные, в исходных данных в стейджинговых моделях. Это удаление ненужных строк может потенциально улучшить производительность последующих промежуточных и март-моделей.

0