Не равно sql oracle

Обновлено: 03.07.2024

This topic describes the elements of common selection queries in ArcGIS. Выражения запросов в ArcGIS используют SQL.

Внимание:

Синтаксис SQL не работает при вычислении полей с помощью окна Калькулятора поля .

Часто используемые запросы: поиск строк

Строковые значения в выражениях всегда заключаются в одинарные кавычки, например:

Строки в выражениях чувствительны к регистру, кроме случаев работы в базах геоданных в Microsoft SQL Server . Чтобы выполнять не чувствительный к регистру поиск в других источниках данных, можно использовать функцию SQL для преобразования всех значений в один регистр. Для источников данных на основе файлов, таких как файловые базы геоданных или шейп-файлы, для задания регистра выборки можно использовать функции UPPER или LOWER. Например, при помощи следующего выражения выбирается штат, имя которого написано как 'Rhode Island' или 'RHODE ISLAND':

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

При помощи оператора LIKE (вместо оператора = ) строится поиск частей строк. Например, данное выражение выбирает Mississippi и Missouri среди названий штатов США:

Символ процента (%) означает, что на этом месте может быть что угодно – один символ или сотня, или ни одного. Если вы хотите использовать групповой символ, обозначающий один любой символ, используйте символ подчёркивания (_). Следующий пример показывает выражение для выбора имен Catherine Smith и Katherine Smith:

Можно также использовать операторы больше (>), меньше (<), больше или равно (>=), меньше или равно (<=), не равно (<>) и BETWEEN, чтобы выбирать строковые значения на основании их сортировки. Например, этот запрос выбирает все города в покрытии, названия которых начинаются с букв от М до Z:

Строковые функции могут использоваться для форматирования строк. Например функция LEFT возвращает определенное количество символов начиная с левого края строки. Данный запрос возвращает все штаты, начинающиеся на букву A:

Список поддерживаемых функций вы найдете в документации по своей СУБД.

Часто используемые выражения: поиск значений NULL

Вы можете использовать ключевое слово NULL, чтобы отбирать объекты и записи, содержащие пустые поля. Перед ключевым словом NULL всегда стоит IS или IS NOT. Например, чтобы найти города, для которых не была введена численность населения по данным переписи 1996 года, можно использовать следующее выражение:

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

Часто используемые выражения: поиск чисел

Точка (.) всегда используется в качестве десятичного разделителя, независимо от региональных настроек. В выражениях в качестве разделителя десятичных знаков нельзя использовать запятую.

Вы можете запрашивать цифровые значения, используя операторы равно (=), не равно (<>), больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=), а также BETWEEN (между), например:

Числовые функции можно использовать для форматирования чисел. Например функция ROUND округляет до заданного количества десятичных знаков данные в файловой базе геоданных:

Список поддерживаемых числовых функций см. в документации по СУБД.

Даты и время

Общие правила и часто используемые выражения

В таких источниках данных, как база геоданных, даты хранятся в полях даты–времени. Однако в шейп-файлах это не тек. Поэтому большинство из примеров синтаксиса запроса, представленных ниже, содержит ссылки на время. В некоторых случаях часть запроса, касающаяся времени, может быть без всякого вреда пропущена, когда известно, что поле содержит только даты; в других случаях её необходимо указывать, или запрос вернет синтаксическую ошибку.

Поиск полей с датой требует внимания к синтаксису, необходимому для источника данных. Если вы создаете запрос в Конструкторе запросов в режиме Условие, правильный синтаксис будет сгенерирован автоматически. Ниже приведен пример запроса, который возвращает все записи после 1 января 2011, включительно, из файловой базы геоданных:

Примечание:

Даты хранятся в исходной базе данных относительно 30 декабря 1899 года, 00:00:00. Это действительно для всех источников данных, перечисленных здесь.

Цель этого подраздела – помочь вам в построении запросов по датам, но не по значениям времени. Когда со значением даты хранится не нулевое значение (например January 12, 1999, 04:00:00), то запрос по дате не возвратит данную запись, поскольку если вы задаете в запросе только дату для поля в формате дата – время, недостающие поля времени заполняются нулями, и выбраны будут только записи, время которых соответствует 12:00:00 полуночи.

Таблица атрибутов отображает дату и время в удобном для пользователя формате, согласно вашим региональным установкам, а не в формате исходной базы данных. Это подходит для большинства случаев, но имеются и некоторые недостатки:

  • Строка, отображаемая в SQL-запросе, может иметь только небольшое сходство со значением, показанным в таблице, особенно когда в нее входит время. Например время, введенное как 00:00:15, отображается в атрибутивной таблице как 12:00:15 AM с региональными настройками США, а сопоставимый синтаксис запроса Datefield = '1899-12-30 00:00:15'.
  • Атрибутивная таблица не имеет сведений об исходных данных, пока вы не сохраните изменения. Она сначала попытается отформатировать значения в соответствии с ее собственным форматом, затем, после сохранения изменений, она попытается подогнать получившиеся результаты в соответствии с базой данных. По этой причине, вы можете вводить время в шейп-файл, но обнаружите, что оно удаляется при сохранении ваших изменений. Поле будет содержать значение '1899-12-30', которое будет отображаться как 12:00:00 AM или эквивалентно, в зависимости от ваших региональных настроек.

Синтаксис даты-времени для многопользовательских баз геоданных

Oracle

Имейте в виду, что здесь записи, где время не равно нулю, не будут возвращены.

Альтернативный формат при запросах к датам в Oracle следующий:

Второй параметр 'YYYY-MM-DD HH24:MI:SS' описывает используемый при запросах формат. Актуальный запрос выглядит так:

Вы можете использовать более короткую версию:

И снова записи, где время не равно нулю, не будут возвращены.

SQL Server

Часть запроса hh:mm:ss может быть опущена, когда в записях не установлено время.

Ниже приведен альтернативный формат:

IBM Db2

Часть запроса hh:mm:ss не может быть опущена, даже если время равно 00:00:00.

PostgreSQL

Вы должны указать полностью временную метку при использовании запросов типа "равно", в или не будет возвращено никаких записей. Вы можете успешно делать запросы со следующими выражениями, если запрашиваемая таблица содержит записи дат с точными временными метками (2007-05-29 00:00:00 или 2007-05-29 12:14:25):

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

Файловые базы геоданных, шейп-файлы, покрытия и прочие файловые источники данных

Файловые базы геоданных поддерживают использование времени в поле даты, поэтому его можно добавить в выражение:

Шейп-файлы и покрытия не поддерживают использование времени в поле даты.

Примечание:

SQL, используемый в файловой базе геоданных, базируется на стандарте SQL-92.

Известные ограничения

Построение запросов к датам, находящимся в левой части (первой таблице) соединения, работает только для файловых источников данных, таких как файловые базы геоданных, шейп-файлы и таблицы DBF. Но возможен обходной путь при работе с другими, не файловыми, источниками, такими как многопользовательские данные, как описано ниже.

Запрос к датам левой части соединения будет выполнен успешно, если использовать ограниченную версию SQL, разработанную для файловых источников данных. Если вы не используете такой источник данных, можете перевести выражение для использования этого формата. Нужно обеспечить, чтобы выражение запроса включало поля из более чем одной присоединенной таблицы. Например, если соединены класс пространственных объектов и таблица (FC1 и Table1), и они поступают из многопользовательской базы геоданных, следующее выражение не будет выполнено или не вернет данные:

Чтобы запрос был выполнен успешно, можно создать вот такой запрос:

Так как запрос включает поля из обеих таблиц, будет использована ограниченная версия SQL. В этом выражении Table1.OBJECTID всегда > 0 для записей, которые сопоставлены в процессе создания соединения, поэтому это выражение всегда верно для всех строк, содержащих сопоставления соединения.

Чтобы быть уверенным, что каждая запись с FC1.date = date '01/12/2001' выбрана, используйте следующий запрос:

Такой запрос будет выбирать все записи с FC1.date = date '01/12/2001', независимо от того, есть ли сопоставление при соединении для каждой отдельной записи.

Комбинированные выражения

Составные запросы могут комбинироваться путем соединения выражений операторами AND (И) и OR (ИЛИ). Вот пример запроса для выборки всех домов с общей площадью более 1500 квадратных футов и гаражом более чем на три машины:

Когда вы используете оператор OR (ИЛИ), по крайней мере одно из двух разделенных оператором выражений, должно быть верно для выбираемой записи, например:

Используйте оператор NOT (НЕ) в начале выражения, чтобы найти объекты или записи, не соответствующие условию выражения, например:

Оператор NOT можно комбинировать с AND и OR. Вот пример запроса, который выбирает все штаты Новой Англии за исключением штата Maine:

Вычисления

Вычисления можно включить в запросы с помощью математических операторов +, –, * и /. Можно использовать вычисление между полем и числом, например:

Вычисления также могут производиться между полями. Например чтобы найти районы с плотностью населения меньшим или равным 25 человек на 1 квадратную милю, можно использовать вот такой запрос:

Приоритет выражения в скобках

Выражения выполняются в последовательности, определяемой стандартными правилами. Например, заключённая в круглые скобки часть выражения выполняется раньше, чем часть выражения за скобками.

Вы можете добавить скобки в режиме Редактирование SQL вручную, или использовать команды Группировать и Разгруппировать в режиме Условие, чтобы добавить или удалить их.

Подзапросы

Подзапрос – это запрос, вложенный в другой запрос и поддерживаемый только в базах геоданных. Подзапросы могут использоваться в SQL-выражении для применения предикативных или агрегирующих функций, или для сравнения данных со значениями, хранящимися в другой таблице и т.п. Это может быть сделано с помощью ключевых слов IN или ANY. Например этот запрос выбирает только те страны, которых нет в таблице indep_countries:

Примечание:

Покрытия, шейп-файлы и прочие файловые источники данных, не относящиеся к базам геоданных, не поддерживают подзапросы. Подзапросы, выполняемые на версионных многопользовательских классах объектов и таблицах, не возвращают объекты, которые хранятся в дельта-таблицах. Файловые базы геоданных имеют ограниченную поддержку подзапросов, описанных в данном разделе, в то время, как многопользовательские базы геоданных поддерживают их полностью. Информацию обо всех возможностях подзапросов к многопользовательским базам геоданных смотрите в документации по своей СУБД.

Этот запрос возвращает объекты, где GDP2006 больше, чем GDP2005 любых объектов, содержащихся в countries (странах):

Поддержка подзапросов в файловых базах геоданных ограничена следующим:

  • Скалярные подзапросы с операторами сравнения. Скалярный подзапрос возвращает одно значение, например: Для файловых баз геоданных, набор функций AVG, COUNT, MIN, MAX и SUM может использоваться лишь в скалярных подзапросах.
  • Предикат EXISTS, например:

Операторы

Ниже приведен полный список операторов, поддерживаемых файловыми базами геоданных, шейп-файлами, покрытиями и прочими файловыми источниками данных. Они также поддерживаются в многопользовательских базах геоданных, хотя для этих источников данных может требоваться иной синтаксис. Кроме нижеперечисленных операторов, многопользовательские базы геоданных поддерживают дополнительные возможности. Более подробную информацию см. в документации по своей СУБД.

Арифметические операторы

Для сложения, вычитания, умножения и деления числовых значений можно использовать арифметические операторы.

Операторы сравнения используются в предложении WHERE, чтобы определить, какие записи выбрать. Вот список операторов сравнения, которые вы можете использовать в SQL:

Операторы сравнения Описание
= Равно
<> Не равно
!= Не равно
> Больше чем
>= Больше или равно
% и _
EXISTS Условие выполнено, если подзапрос возвращает хотя бы одну строку

Пример - оператор равенства

В SQL вы можете использовать оператор = для проверки на равенство в запросе.

В этом примере у нас есть таблица с suppliers со следующими данными:

supplier_id supplier_name city state
100 Yandex Moscow Moscow
200 Google 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 Facebook Menlo Park California
900 Electronic Arts San Francisco California

Введите следующий SQL оператор:

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 Google 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 Facebook Menlo Park California
900 Electronic Arts San Francisco California

Выполните следующий SQL оператор, чтобы проверить неравенство, используя оператор <> :

Или введите следующий SQL оператор, чтобы использовать оператор != :

Будет выбрано 8 записей. Вот результаты, которые вы должны получить с помощью одного из операторов SQL:

supplier_id supplier_name city state
200 Google 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 Facebook Menlo Park California
900 Electronic Arts San Francisco California

В этом примере оба оператора SELECT будут возвращать все строки из таблицы suppliers , где supplier_name не равно Yandex.

Пример - оператор больше чем

Вы можете использовать оператор > в SQL для проверки выражения больше чем.
В этом примере у нас есть таблица customers со следующими данными:

SQL

Программирование и разработка

SQL

Оператор SQL not equal представлен как <>. Этот оператор позволяет вам выбирать строки из базы данных, которые не соответствуют определённому условию. Оператор! = Используется в операторе WHERE. Оператор! = Может использоваться вместо <> в некоторых экземплярах SQL.

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

Вы когда-нибудь хотели выбрать строки, в которых содержимое поля не равно определённому значению? Вам повезло, потому что в SQL есть оператор, созданный для этой цели.

Вы можете выбирать строки в зависимости от того, не равны ли одно или несколько значений их полей определённому значению.

В этом руководстве мы поговорим об использовании оператора SQL not equal. Мы обратимся к примеру, который поможет вам начать работу.

SQL Not Equal

Оператор SQL не равно <>. Вы должны указать это в инструкции WHERE. Это позволяет вам выбирать строки, в которых содержимое определённого столбца не совпадает с указанным вами значением. Вы также можете использовать! = Как оператор неравенства в некоторых версиях SQL.

Давайте посмотрим на типичный запрос в SQL:

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

В традиционном стандарте SQL ISO символ, обозначающий «не равно», — <>. В других версиях можно использовать! =. Если вы не уверены, что использовать, придерживайтесь стандарта, так как он наверняка работает. Думаю, что выражение bang equal было создано, потому что оно похоже на то, как другие языки программирования представляют предложение not equal.

Пример SQL Not Equal

Мы собираемся создать таблицу под названием «имена». Мы собираемся добавить несколько записей в эту таблицу. Затем мы будем использовать символ неравенства для запроса данных из таблицы:

Я использовал и <>, и! =, Чтобы показать, что оба работают в этом случае. Я использую sqlite3 в песочнице Repl.it для размещения этой базы данных. Ваш опыт может отличаться, если вы используете другой редактор кода или среду песочницы SQL.

Набор результатов из нашего оператора SQL показывает:

Наш запрос возвращает все записи, в которых «name» не равно «Christina». «Id» не должен быть равен 7, чтобы запись была возвращена. Ты сделал это! Вот как вы используете оператор сравнения не равно в SQL.

Вывод

Вы можете выбрать строки из базы данных, содержимое которых не соответствует определённому значению, с помощью оператора SQL not equal. В большинстве версий SQL оператор «не равно» — это знак «меньше», за которым следует знак «больше» (<>).

Восклицательный знак, за которым следует знак равенства (! =), Доступен как оператор неравенства в некоторых версиях SQL. Этот оператор позволяет сравнить два выражения, чтобы увидеть, не равны ли они друг другу.

Антон Меринов

Использование операций SQL в базе данных Oracle

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

Операции сравнения

Операции сравнения позволяют сравнивать одно определенное значение столбца с несколькими другими значениями. Ниже перечислены основные операции сравнения.

  • BETWEEN . Позволяет проверять, находится ли значение между двумя другими значениями.
  • IN . Позволяет проверять, присутствует ли значение в списке значений.
  • LIKE . Позволяет проверять, соответствует ли значение определенному образцу, как показано ниже:

Логические операции

Логические операции, также называемые булевскими, позволяют логическим образом сравнивать два или более значений. Главные логические операции выглядят так: AND (И), OR (ИЛИ), NOT (НЕ), GE (БОЛЬШЕ ИЛИ РАВНО) и LE (МЕНЬШЕ ИЛИ РАВНО). Ниже приведен пример, иллюстрирующий применение некоторых из этих операций:

В случае использования сразу нескольких операций внутри одного оператора необходимо помнить об их старшинстве. Oracle всегда вычисляет арифметические операции вроде умножения, деления, сложения и вычитания перед вычислением условий. Ниже показан порядок старшинства операций в Oracle, причем самая важная операция идет первой:

Операции над множествами

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

Читайте также: