Поделиться через


Операторы сравнения (визуальные инструменты для баз данных)

Обновлен: Ноябрь 2007

Можно использовать любые стандартные операторы SQL в условии поиска.

При использовании операторов в условиях поиска действуют следующие правила:

  • Типы используемых данных в сравнении должны совпадать. Т.е., текст можно сравнивать только с текстом, числа с числами и т.д. Некоторые системы управления базами данных позволяют использовать функцию или ключевое слово (например, CAST) для временного преобразования данных в другой тип. Дополнительные сведения см. в документации по своей базе данных.

  • Если сравнивать текстовые данные, результат зависит от текущей используемой кодировки. Например, если таблица была создана с помощью скандинавских символов, результаты поиска могут различаться в зависимости от того, используется ли в данный момент скандинавская кодировка (кодовая страница), или другая.

  • Если значение сравнения нулевое, результат неизвестен. Нулевые значения не считаются равными никаким другим значениям, включая другие нулевые значения. Например, при выполнении поиска имени, начинающегося с буквы "M" или выше (name >= 'M'), и некоторые строки не содержат значений, эти строки не появятся, независимо от того, какой оператор сравнения используется.

В следующей таблице собраны операторы условий поиска, определенные для стандартного SQL.

3ssydyfz.alert_note(ru-ru,VS.90).gifПримечание.

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

Оператор

Значение

Пример области критериев*

Пример области SQL

=

Равно

= 'Smith'
SELECT fname, lname
FROM employees
WHERE lname = 'Smith'

<> !=

Не равно

<> 'Active'
SELECT fname, lname
FROM employees
WHERE status <> 'Active'

>

Больше

> '01 Jan 1995'**
SELECT fname, lname
FROM employees
WHERE hire_date >
 '12/31/90'

<

Меньше

< 100
SELECT fname, lname
FROM employees
WHERE job_lvl < 100

>= !<

Больше или равно

>= 'T'
SELECT au_lname
FROM authors
WHERE au_lname >= 'T'

<= !>

Меньше или равно

<= '01 Jan 1995'**
SELECT fname, lname
FROM employees
WHERE hire_date <= 
 '01/01/95'

BETWEEN expr1 AND expr2

Проверяет диапазон значений

BETWEEN 
'01 Jan 1995' 
AND 
'31 Dec 1995'**
SELECT fname, lname
FROM employees
WHERE hire_date 
 BETWEEN '12/31/90'
 AND '12/31/91'

IS [ NOT ] NULL

Проверяет, является ли содержимое столбца или результат выражения нулевым

IS NULL
SELECT fname, lname
FROM employees
WHERE photo_on_file IS NULL

[ NOT ] LIKE

Выполняет сравнение по шаблону (обычно допустимо только для символьных типов данных)

LIKE ('MAC%')
SELECT fname, lname
FROM employees
WHERE lname LIKE ('MAC%')

expr1 [NOT] IN (val1, val2, ...) – или –expr1 [NOT] IN (subquery)

Сопоставляет список конкретных значений путем проверки, входит ли выражение expr1 в список значений или набор результатов вложенного запроса

IN ('SW', 'SE')
supplier_id IN
  (subquery)
SELECT fname, lname
FROM employees
WHERE sales_region IN ('SW', 'SE')
SELECT product_name
FROM products
WHERE supplier_id IN
  (SELECT supplier_id
  FROM supplier
  WHERE (country = 'Sweden'))

ANY (SOME)

Проверяет, соответствует ли одна или несколько строк в наборе результатов вложенного запроса заданному условию (ANY и SOME — синонимы; Конструктор запросов и представлений использует ANY при создании SQL инструкции).

<> ANY (subquery)
SELECT au_lname, au_fname
FROM authors
where city <> any
 (SELECT city FROM publishers)

ALL

Проверяет, соответствуют ли все строки в результирующем наборе вложенного запроса заданному условию

advance > ALL (subquery)
SELECT title FROM titles
where advance > all
  (SELECT advance FROM
   publishers,titles
  where titles.pub_id 
   = publishers.pub_id
  AND pub_name = 
   'Alogdata Infosystems')

[NOT] EXISTS

Проверяет, возвращает ли вложенный запрос хоть какой-нибудь результат (не конкретный результат)

EXISTS (subquery)
SELECT product_name
FROM products
WHERE EXISTS
  (SELECT * FROM 
   orders, products
  WHERE orders.prod_id 
  = products.prod_id)

*   Для ясности, примеры области критериев содержат только один пример для каждого оператора и не указывает, в каком столбце данных выполняется поиск.

**   Данные можно ввести в области критериев с помощью формата, указанного в диалоговом окне Свойства языка и стандартов Windows. Дополнительные сведения см. в разделе Правила ввода значений для поиска.

См. также

Другие ресурсы

Конструирование запросов и представлений

Ссылка (визуальные инструменты работы с базами данных)